Intereting Posts
Как найти строку в массиве в PHP? Как проверить, включен ли адрес внутри региона в API Карт Google Канонический URL-адрес связан с Facebook, а не с реальным URL-адресом. Динамические теги OpenGraph Mysqli выбрасывает «Warning: mysqli_stmt_bind_param () ожидает, что параметр 1 будет mysqli_stmt, boolean задан« Перенос содержимого таблиц и разбора переменных таблицы на следующую страницу Страница поиска PHP SQL возвращает ошибку PHP $ _SESSION Возвращение пустого массива даже когда значения заданы Как генерировать getter и setter в eclipse (php) Самая короткая логика для вычисления часов от перекрытого времени php Обнаружение конца HTTP-пакета Я не могу найти ошибку в php (все начинается здесь: http://stackoverflow.com/questions/30393024/) MAMP: php.ini – mbstring.http_input – Отключение для Drupal Исключить исключение «Swift_TransportException» с сообщением «Невозможно установить соединение с хостом smtp.gmail.com preg_match_all с разделителями пробела и запятой Разница версий для strtotime («первый день прошлого месяца»)?

phantomjs на Mac OS X работает из командной строки, а не через exec ()

следующее прекрасно работает в командной строке для пользователя xyz:

/opt/local/bin/phantomjs --version 1.9.1 

Но, в PHP, с тем же пользователем (xyz), я получаю код ошибки 5

 exec('/opt/local/bin/phantomjs --version', $o, $r) echo $r 

Я использую MAMP, и exec () нормально работает нормально. Если кто-то знает, как отлаживать это, я бы очень благодарен!

Спасибо Амалу Мурали за то, что он указал мне в правильном направлении!

Это описано также в команде exec () для mac osx возвращает 5 и может быть исправлено путем отмены настройки DYLD_LIBRARY_PATH.

Будет работать следующая команда:

 exec('unset DYLD_LIBRARY_PATH ; /opt/local/bin/phantomjs --version', $o, $r) echo $r 

Ура,

Альберт.

Перенаправить вывод, добавив 2>&1 в конце вашей команды, например:

 exec('/opt/local/bin/phantomjs --version 2>&1', $o, $r); var_dump($r); 

2>&1 говорит, что посылает стандартную ошибку, где всегда перенаправляется стандартный вывод. См. Этот ответ для получения дополнительной информации.

Вероятно, это проблема с переменными окружения. Общей проблемой с macports является использование «запаса» apachectl, который поставляется с OSX (расположенным в / usr / sbin / apachectl), а не с macports apachectl, расположенным в / opt / local / apache2 / bin / apachectl.

В большинстве случаев версия запаса будет работать правильно. Однако только версия macports установит правильную среду (например, используя / opt / local / apache2 / bin / envvars и правильно установив DYLD_FALLBACK_LIBRARY_PATH.

Если вы используете sudo apachectl для управления apache, скорее всего, вы используете версию apachectl.

Вы можете удалить его (или переименовать его в /usr/sbin/apachectl.orig) и symlink вместо версии macports:

 mv /usr/bin/apachectlapachectl /usr/bin/apachectlapachectl.orig ln /opt/local/apache2/bin/apachectl /usr/bin/apachectl 

Если у вас по-прежнему возникают проблемы, вам может понадобиться изучить глубину в переменных среды, используемых apache (и, таким образом, переданных php).