user3755325
user3755325

Reputation: 79

Running PhantomJS from PHP with exec()

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

Answers (4)

user3200692
user3200692

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

Kepedizer
Kepedizer

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

Artjom B.
Artjom B.

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

poletaew
poletaew

Reputation: 196

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

Use the php-phantomjs and PhantomJS Runner instead.

Upvotes: -1

Related Questions