Reputation: 79
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 ?
Upvotes: 0
Views: 11286
Reputation: 87
<?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?
Upvotes: 0
Reputation: 856
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 ;)
Upvotes: 3
Reputation: 61952
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
Upvotes: 0
Reputation: 196
Do not use exec(). Never. It's a bad way.
Use the php-phantomjs and PhantomJS Runner instead.
Upvotes: -1