2013-03-07 73 views
1

我的Windows服务器的Windows PHP的exec /用了shell_exec总是phantomjs返回null

上运行PHP 5.4.9我已经试过所有正在运行的脚本在PHP(EXEC,了shell_exec,系统,proc_open,中继)命令。所有似乎都返回空或空。

我添加了phantomjs作为PATH变量。

并运行在命令提示符下phantomjs --version,并返回1.8.2

虽然当我尝试运行

$return = exec("phantomjs --version") 

$return = shell_exec("phantomjs --version", $output) 

$return总是空和$output是空的。

我确信IUSR和IIS_IUSRS用户必须运行phantomjs.exe

安全模式允许在php.ini

也不起作用,我试图运行exec('ls') && exec('ipconfig /all'),以及那些将数据输出我期待。

我不知道还有什么可以尝试的。

+0

你肯定phantomjs在壳中的路径exec()'d服务器?只是因为它在您的帐户路径中,因此可能不在IUSR_IIS帐户的路径中。 – 2013-03-07 18:06:08

+0

尝试以下操作并查看是否填充$ out或$ ret。 $ out将是一个数组。 exec('phantomjs --version'。'2>&1',$ out,$ ret); – Gavin 2013-03-07 18:54:54

+0

路径位于系统变量 - >路径变量中。 – 2013-03-08 16:05:21

回答

0

你非常接近解决方案。它基本上是:

$stdout = shell_exec('time /T'); 
echo $stdout; 

您需要确保Phantom二进制文件位于路径中或使用完整路径调用。

有关执行PhantomJS的完整示例,请参阅driver file of "jakoch/PHPUnit-headless"

1

我面临同样的问题.. 的事情是phantomjs需要的是我想出了解决方案为所有 这里完整路径:

$getout = exec('D:\\xampp\\htdocs\\phantomjsdir\\phantomjs.exe D:\\xampp\\htdocs\\rasterisejsdir\\rasterize.js http://localhost/pagetobecaptured/test D:\\xampp\\htdocs\\outputfiledir\\test2.jpg "1800px*840px"',$o,$e); 
+0

那么,我把路径phantomjs.exe放到我的PATH系统变量中。它可以立即通过CLI访问。但是,在我使用本地系统帐户运行Apache的情况下,如果没有使用可执行文件的完整路径(就像你写的那样),它就不起作用。 所以我认为Apache服务可能需要以某种方式更新新的PATH - 无论是通过重新启动PC还是重新启动服务本身。后者工作。 :) – 2017-10-18 13:04:43