从PHP运行Linux命令

时间:2012-01-03 01:35:27

标签: php linux permissions exec shell-exec

我有一个独特的情况。我正在尝试从名为Diascope的PHP脚本运行视频编码程序,该脚本依赖于ImageMagick提供的“convert”命令。我有一个bash脚本执行一个非常简单的转换,然后它运行名为Diascope的应用程序。这是转换代码,以下工作正常,它会创建新文件

convert image.jpg image.png

显示没有错误,但我按照这样运行Diascope

diascope -clean audio.txt

我可以看到Diascope加载属性,因为它打印“Diascope 0.2.1”:

  

diascope 0.2.1(ms 2006-2010)幻灯片发生器参见   http://diascope.sf.net用于文档和更新。

     

错误:找不到可执行程序:转换请参阅   发行说明中对diascope的要求。

当我运行shell_exec("whoami");时,它会打印“nobody”

那么为什么我可以自己运行转换器,但“diascope”进程似乎无法使用它?我已经尝试进入/usr/local/bin/convert并将其调整为777,但它似乎没有任何影响,我还能在这里尝试什么?

更新:我应该补充一点,当我尝试在终端上以root身份运行diascope -clean audio.txt时,它会像它应该创建audio.flv文件一样,我似乎无法sudo su nobody它返回This account is currently not available.

1 个答案:

答案 0 :(得分:4)

PHP与apache运行的用户相同,通常是www-data或nobody。我相信你可以使用suPHP + apache来改变PHP运行的用户。