在一个shell中,我做了简单的whoami,我得到了geoff,这很好,因为我就是这样的人
在一个php文件中,我有shell_exec(‘shell_exec’);但我没有得到任何人。
对我来说,这似乎是一个差异,可以解释我最初的问题: imagemagick可以在shell中工作,但不能在php脚本中工作。
现在,通过这个站点,我认为这意味着我的apache xampp分配了一个不同的用户名,而不是使用我常用的用户名。
我已经尝试通过sudo的方式在php中更改我的登录,但到目前为止这对我还不起作用。
有人能帮上忙吗?
发布于 2012-01-21 05:16:50
@anubhava是正确的,为什么当你运行whoami时会得到两个不同的答案。但是,如果您尝试使用ImageMagick将PDF转换为PNG (如您在该问题上的评论),如果脚本的路径不包含Ghostscript的路径位置,则即使使用ImageMagick的convert的完整路径也不会起作用。在不影响任何用户路径的情况下,您可以添加:
putenv("PATH=/usr/local/bin:/usr/bin:/bin");或者类似的东西,这取决于您的设置。gs可执行文件必须位于脚本用户路径中的某个位置,否则ImageMagick将无法转换PDF或EPS文件。
发布于 2012-01-21 05:05:22
它应该简单易懂。
geoff的身份登录,这就是您所得到的。nobody作为所有者的httpd进程中运行,因此这就是您从PHP执行shell_exec('whoami');时所得到的。发布于 2012-01-21 05:07:49
您从apache获得的结果只是表示您的whoami是以nobody身份运行的。这是理所当然的,我强烈建议不要改变这一点。
imagemagick无法工作的原因可能与php代码的运行权限没有直接关系。没有足够的信息来准确诊断问题,但很可能是可执行文件或库搜索失败。确保二进制文件和库对于nobody是可读的,并且它们位于apache能够找到它们的位置。特别是确保正确设置了$PATH和$LD_LIBRARY_PATH。
https://stackoverflow.com/questions/8947782
复制相似问题