有些命令确实运行PHP exec()其他人没有,我怎么能避免/修复这个?

时间:2014-09-29 23:48:39

标签: php linux

  • 服务器是CentOS,我没有root权限。
  • 我可以使用pngquant毫无问题地运行exec(),但不能使用ImageMagick&{39} convert
  • 我得到"许可被拒绝"尝试使用convert打开图像文件但与pngquant一起正常工作时(注意两个命令在同一文件夹中打开相同的图像文件,相同的权限,相同的用户等)。
  • 由于我没有root访问权限,因此我构建了ImageMagick并将其添加到PATH中。
  • 从命令行convert工作正常(用户有足够的权限读取/写入图像文件)。
  • PHP尝试将exec('convert ...')shell_exec('convert ...')作为无人运行,这意味着echo shell_exec('whoami');返回" nobody"。 pngquant相同但结果成功(没有"权限被拒绝"问题)。

任何线索?

1 个答案:

答案 0 :(得分:1)

  

由于我没有root权限,我已经构建了ImageMagick并将其添加到   路径。

您创建的二进制文件的权限是什么?听起来像你 - 用户有权执行二进制文件。但是作为nobody运行的PHP没有执行权限。我打赌你创建的二进制权限类似744甚至700?我建议您在创建的二进制文件上使用chmod 755,然后重试。