Running PhantomJS from PHP with exec()

我的梦境 提交于 2019-12-23 05:29:14

问题


I've got the following script:

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

It try to run it from the following PHP script:

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

This script return the following error:

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

I tried to run phantomjs -v by hand in a console, and it runs fine. I checked the PATH, and phantomjs is correctly defined and found.

The execution environment is a virtual Server with LiveConfig. Can someone help me understand what I'm doing wrong ?


回答1:


Your PATH probably lacks the location for the phantomjs executable. PhantomJS is probably installed in /usr/local/bin so you need to add this to your PATH variable:

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

To check what the current PATH is, you could begin the shell script with:

#!/bin/sh
echo $PATH



回答2:


It could be an issue with shell_exec() and line breaks, try adding "2>&1" to the string you are passing:

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

this worked for me, found it in the top comment here, naturally ;)




回答3:


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

Yes. Sometimes phantomjs don't need full path in some environment without generate any error. However, sometimes it does.

Always use the full path for all argument in the php command.

Did you use the fullpath for hello.js?




回答4:


Do not use exec(). Never. It's a bad way.

Use the php-phantomjs and PhantomJS Runner instead.



来源:https://stackoverflow.com/questions/24300717/running-phantomjs-from-php-with-exec

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!