使用exec()从PHP运行PhantomJS

时间:2014-06-19 07:08:01

标签: php phantomjs sh shared-hosting

我有以下脚本:

#!/bin/sh
export DISPLAY=:0
phantomjs --version

尝试从以下PHP脚本运行它:

<?php
$result = shell_exec('sh test.sh'); 
echo $result;
?>

此脚本返回以下错误:

[Thu Jun 19 10:31:31 2014] [error] [client] test.sh: line 3: phantomjs: command not found

我试图在控制台中手动运行phantomjs -v,它运行正常。我检查了PATH,并正确定义并找到了phantomjs。

执行环境是带有LiveConfig的虚拟服务器。 有人能帮我理解我做错了吗?

4 个答案:

答案 0 :(得分:3)

这可能是shell_exec()和换行符的问题, 尝试添加&#34; 2&gt;&amp; 1&#34;到你传递的字符串:

$result = shell_exec('sh test.sh 2>&1'); 

这对我有用,在最高评论here, naturally ;)

中找到了它

答案 1 :(得分:0)

您的PATH可能缺少phantomjs可执行文件的位置。 PhantomJS可能安装在/usr/local/bin中,因此您需要将其添加到PATH变量中:

#!/bin/sh
export DISPLAY=:0
PATH=$PATH:/usr/local/bin
phantomjs --version

要检查当前PATH的内容,您可以使用以下命令开始使用shell脚本:

#!/bin/sh
echo $PATH

答案 2 :(得分:0)

<?php
         exec('/usr/local/bin/phantomjs path/somescript.js');
?>

是。有时phantomjs在某些环境中不需要完整路径而不会产生任何错误。但是,有时它确实如此。

始终在php命令中使用所有参数的完整路径。

您是否使用了hello.js的完整路径?

答案 3 :(得分:-1)

不要使用exec()。决不。这是一个糟糕的方式。

改为使用php-phantomjsPhantomJS Runner