问题
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