【发布时间】:2012-01-09 15:14:56
【问题描述】:
问题是关于从 PHP 运行外部命令。请在下面找到我的代码。
$htmlcontent=$_POST['source'];
echo $htmlcontent;
if(!isset($htmlcontent)){die('No HTML Cannot Proceed');}
$sourcefile='sourcefile.html';
$htmlfile=fopen($sourcefile,'w') or die('Open Failed');
fwrite($htmlfile,$htmlcontent);
fclose($htmlfile);
if(!file_exists($sourcefile)){die('File Creation failed');}
$command="CutyCapt --html=sourcefile.html --out=trials.png";
echo 'Executing'.shell_exec($command);
我正在尝试使用 CutyCapt 生成提供的源 HTML 的快照。我的 CutyCapt 从命令行运行良好,它还生成快照。但是当我像在代码中编写的那样运行它时,什么也没有发生。
我尝试从中执行像ls 这样的普通命令。那些也在网络服务器上工作。对此感到困惑,任何人都可以给我一些建议吗?
我可能哪里出错了?我在 bin 中有 CutyCapt,准备在终端执行。
我正在使用带有 PHP 5.3 的 Ubuntu 11.10。
有什么想法吗? 谢谢
【问题讨论】:
-
网络服务器是否对 CutyCapt 具有执行权限,该应用程序是否在 shell 路径中?它是否也具有使用 trial.png 的写入权限?要解决路径问题,请使用绝对路径:
/usr/bin/CutyCapt ... -
我尝试将 0777 设置为该文件夹。仍然没有变化。
-
我已经给了 www-data(WebServer) 用户权限。但是某些命令存在问题。像 'ls, ps' 可以正常工作,但 'la' 不行。我不知道为什么它不起作用
-
检查 php.ini 以确保您被允许运行命令