命令适用于ssh,但在使用PHP exec()函数时不起作用!

时间:2011-07-05 09:34:11

标签: php exec

我正试图在我的CentOS服务器上运行CutyCapt,以获取网站截图!

问题是命令"/downloads/cutycapt/CutyCapt/CutyCapt --url=http://www.google.dk --out=/downloads/cutycapt/CutyCapt/test2.png --min-width=800 --min-height=600"在我从命令行运行时有效!

但是如果我尝试运行它,在PHP exec函数内部,什么都不会发生,并且它也不会返回任何内容。

更新:

命令bellow适用于shell。

rm -rf /tmp/.X4-lock&Xvfb :1 -fp /usr/share/X11/fonts/misc -screen 0 1024x768x24 &export DISPLAY=localhost:1.0&CutyCapt --url=http://www.scrapee.net --out=/downloads/cutycapt/CutyCapt/test4.png

但代码吼叫不要在php上工作 E xec('rm -rf /tmp/.X4-lock&Xvfb :1 -fp /usr/share/X11/fonts/misc -screen 0 1024x768x24 &export DISPLAY=localhost:1.0&CutyCapt --url=http://www.scrapee.net --out=/downloads/cutycapt/CutyCapt/test4.png',$out);

安全模式已关闭。所以我真的不知道自己做错了什么。

有人可以帮帮我吗?谢谢。

3 个答案:

答案 0 :(得分:1)

CutyCapt需要X服务器才能工作。如果您作为自己的用户从CLI运行它,则可能已经为您的用户运行了X服务器。 Web服务器用户无法直接使用此X服务器。为Web服务器用户启动X服务器,并在yor PHP脚本的开头更改DISPLAY环境变量以使用此X服务器。

如果这是没有屏幕的服务器,请考虑使用Xfvb,这是一个无头X服务器。

答案 1 :(得分:0)

可能是权限问题

sudo chown www-data:www-data your_file.php

答案 2 :(得分:0)

在没有X服务器的情况下使用CutyCapt

如果没有X服务器,你不能使用CutyCapt,但你可以使用例如如果您没有运行交互式图形桌面环境,Xvfb将作为轻量级服务器。例如,您可以使用:

  % xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=...

http://cutycapt.sourceforge.net/