Использование PHP exec() приводит к ошибке: Fatal: [Errno 2] Нет такого файла или каталога; ты установил

Я пытаюсь использовать PHP для exec() двоичного файла casperjs,

exec('casperjs /var/www/mysite/application/phantomjs/test.js');

но я получаю ошибку

Fatal: [Errno 2] No such file or directory; did you install phantomjs?

CasperJS работает поверх PhantomJS, которые я установил вручную и создал ссылку на /usr/local/bin/phantomjs и /usr/local/bin/casperjs. Итак, я предполагаю, что casperjs вызывает phantomjs при запуске.

Однако он отлично работает, когда я подключаюсь к серверу по ssh и запускаю

casperjs /var/www/mysite/application/phantomjs/test.js

Что пошло не так? Я думаю, что casperjs не может запустить phantomjs как веб-пользователь? Если это правда, как это можно исправить?


person Nyxynyx    schedule 02.01.2013    source источник
comment
попробуй exec('/usr/local/bin/casperjs /var/www/mysite/application/phantomjs/test.js');   -  person Ascherer    schedule 03.01.2013
comment
@Ascherer Я получаю ту же ошибку. Fatal: [Errno 2] No such file or directory; did you install phantomjs?   -  person Nyxynyx    schedule 03.01.2013


Ответы (2)


Просто попробуйте вызвать команду exec с полным путем к программе. Например

exec('/usr/local/bin/casperjs /var/www/mysite/application/phantomjs/test.js');

Также убедитесь, что вам разрешено выполнять эту программу через веб-сервер, особенно если вы используете php safe_mode on. Взгляните на safe_mode_exec_dir

person golja    schedule 02.01.2013
comment
Я использую PHP 5.4.9, поэтому в моем php.ini нет строки safe_mode. Использование полного пути к программе дает мне ту же ошибку, возможно, casperjs не вызывает phantomjs, используя свой полный путь. - person Nyxynyx; 03.01.2013

У меня была точно такая же проблема, и я нашел здесь рабочее решение: https://groups.google.com/forum/?fromgroups=#!topic/casperjs/92yUM9O0XjA

person Krzychu    schedule 25.04.2013
comment
В OSX, если вы не устанавливаете phantomjs через homebrew и используете исполняемый файл, предварительно скомпилированный на их веб-сайте, вам необходимо указать фактическое местоположение phantomjs через переменную env: export PHANTOMJS_EXECUTABLE=/path/to/phantomjs - person Mihai Oprea; 24.11.2013
comment
У меня была такая же проблема на Centos 6.9, и этот ответ также сработал (добавьте эти строки в свой PHP-скрипт над exec: putenv(PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs); putenv(DYLD_LIBRARY_PATH);) - person Craig Nakamoto; 24.05.2017