2013-03-07 3 views
1

Я бегу PHP 5.4.9 на сервере Windows,Windows, PHP Exec/shell_exec с phantomjs всегда возвращает нулевой

Я попытался запустить все команды сценария в PHP (EXEC, shell_exec, система, proc_open, PassThru). Кажется, все возвращаются пустым или нулевым.

Я добавил phantomjs как переменную PATH.

И работает phantomjs --version в командной строке, и она возвращает 1.8.2

Хотя, когда я пытаюсь запустить

$return = exec("phantomjs --version") 

или

$return = shell_exec("phantomjs --version", $output) 

$return всегда нуль и $output пуст.

Я убедился IUSR и IIS_IUSRS пользователи имеют разрешение на запуск phantomjs.exe

Безопасный режим отключен в php.ini

Кроме того, я попытался запустить exec('ls') && exec('ipconfig /all'), и те, выводить данные я ожидаю ,

Я не уверен, что еще попробовать.

+0

Вы уверены, что phantomjs находится в пути оболочки существа exec() 'd сервером? просто потому, что он находится на пути вашей учетной записи, это может быть не на пути учетной записи IUSR_IIS. –

+0

Попробуйте следующее и посмотрите, заполнены ли $ out или $ ret. $ out будет массивом. exec ('phantomjs --version'. '2> & 1', $ out, $ ret); – Gavin

+0

Путь находится в переменной System Variables -> Path. –

ответ

0

Вы очень близки к решению. Это в основном:

$stdout = shell_exec('time /T'); 
echo $stdout; 

Вы должны убедиться, что бинарная Фантом либо на пути или вызываются полным путем.

Для полного примера выполнения PhantomJS см. driver file of "jakoch/PHPUnit-headless".

1

Я столкнулся с той же проблемой .. Дело в том, phantomjs требуется полный путь для всех Вот решение, которое я придумал:

$getout = exec('D:\\xampp\\htdocs\\phantomjsdir\\phantomjs.exe D:\\xampp\\htdocs\\rasterisejsdir\\rasterize.js http://localhost/pagetobecaptured/test D:\\xampp\\htdocs\\outputfiledir\\test2.jpg "1800px*840px"',$o,$e); 
+0

Ну, я поместил путь к phantomjs.exe в свою системную переменную PATH. Он был мгновенно доступен с использованием CLI. Но он не работал в моем Apache, запущенном под учетной записью Local System, без использования полного пути к исполняемому файлу (как вы пишете). Итак, я подумал, что службе Apache, возможно, потребуется обновить новую PATH - либо путем перезагрузки ПК, либо путем перезапуска самой службы. Последний работал. :) –

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