2015-04-22 4 views
0

Я пытаюсь запустить PhantomJS с помощью PHP на веб-сервере Linux. Это в конечном итоге будет выполняться как задание cron, но пока я запускаю его через PHP-скрипт, который я загружаю через FTP на сервер.Запуск PhantomJS со стороны сервера PHP

PHP скрипт:

$cmd = '/usr/local/bin/phantomjs /home/accountname/public_html/myscript.js'; 
$result = exec($cmd); 
var_dump($result); 

(Обратите внимание, что я изменил имя учетной записи на пути выше «ACCOUNTNAME» на частную жизнь, но это правильно в моем реальном сценарии - и копируется из множества другие скрипты, которые все работают отлично)

содержание myscript.js:.

console.log('Hello, world!'); 
phantom.exit(); 

Полученный выход:

string(0) "" 

Я пытался несколько примеров с сайта PhantomJS Я никогда не получаю никакого вывода - либо на экране, в консоли или примеров, которые создают скриншоты файлы PNG никогда не появляются в нужном месте - хотя я указываю точные пути.

Я попробовать возвращение версии PhantomJS и это возвратил правильный вариант:

$cmd = '/usr/local/bin/phantomjs --version'; 
$result = exec($cmd); 
var_dump($result); 

Возвращается:

string(5) "1.9.2" 

Я знаю, что «Exec» не безопасный способ запуска вещи в PHP - но я просто пытаюсь проверить, что PhantomJS работает, чтобы начать работу, а затем мы настроим все, чтобы работать безопасно.

Любые идеи? Заранее спасибо.

+0

Не совсем понятно. Вы запустили myscript.js напрямую и вывели правильную строку? На какой ОС/платформе вы работаете? –

+0

Ну, myscript.js имеет специальный вызов PhantomJS «phantom.exit();» но если я выберу это и сразу вызову JS-файл, тогда да, это сработает. Если я запустил PHP, содержащий код, показанный в моем первоначальном примере, и запустил этот сценарий с использованием задания cron, тогда он отлично работает. Он просто выполняет его из браузера, что вызывает проблему. У меня возникла проблема, запустив регулярное задание cron и обновив PHP, чтобы ссылаться на таблицу MySQL, которая выступает в качестве очереди, чтобы передать ее JS-файл и планировать, когда эта задача требуется. Это управляемый хостинг-сервер под управлением CENTOS 5.11 –

ответ

0

Использование Try:

$cmd = 'unset DYLD_LIBRARY_PATH ;'; 
$cmd.= ' /usr/local/bin/phantomjs'; //where is isntalled phantomjs 
$cmd.= ' /var/www/rasterize.js'; //where is your script 
exec($cmd.' 2>&1', $output); 
print_r($output); 

Этот сценарий был протестирован на Ubuntu 12.04 с PHP 5.4.

Смежные вопросы