0

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 ?

Elwinar
  • 9,103
  • 32
  • 40
user3755325
  • 79
  • 1
  • 2
  • 9

4 Answers4

3

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 ;)

Kepedizer
  • 826
  • 2
  • 10
  • 24
0

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
Artjom B.
  • 61,146
  • 24
  • 125
  • 222
0
<?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?

-1

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

Use the php-phantomjs and PhantomJS Runner instead.

poletaew
  • 197
  • 2
  • 12
  • Why? php-phantomjs is a separate API. PhantomJS Runner also uses `shell_exec`. What's your argument? – Artjom B. Jun 19 '14 at 12:58
  • Artjom, exec is on the list of potentially dangerous functions, and because on many web hostings your product will not work. Therefore the use of exec is considered bad programming style. However, if there is no other way... – poletaew Jun 23 '14 at 09:47