Переменная среды $PATH для apache2 на Mac

Я пытаюсь заставить apache / php распознать путь к моему мерзавцу. Я исследовал и искал во всех уголках сети и не могу найти, как это сделать. В принципе, независимо от того, что я пытаюсь, когда я бегу echo phpinfo(); Apache Environment путь не меняется от /usr/bin:/bin:/usr/sbin:/sbin, И когда я бегу system('echo $PATH'); в PHP он читает то же самое.

Системная информация:

  • Mac OSX (лев)
  • Apache 2 (работает как _www)
  • PHP 5.3.6

Вот что я пытался редактировать до сих пор:

  • / И т.д. / профиль
  • ~/.Bash_profile
  • ~/.Profile
  • / И т.д. / путь
  • /etc/path.d/{NEW_FILE}

Ничто из того, что я пробовал до сих пор, не изменило $PATH переменная. Есть идеи?

РЕШЕНИЕ

Итак, вот окончательное решение. Я редактировал

/System/Library/LaunchDaemons/org.apache.httpd.plist

и добавил

<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin</string>
</dict>

6 ответов

Решение

Вы можете установить переменную среды PATH в /System/Library/LaunchDaemons/org.apache.httpd.plist,

Больше в документах.

Вы обновили переменную среды PATH пользователя '_www'? Apache будет читать переменные окружения от пользователя, который запускает сам. Или, похоже, вы не перезапустили apache после обновления переменной среды PATH.

И если вы хотите изменить переменную окружения в PHP, лучше использовать getenv() и putenv().

Важное примечание для El Capitan (извинения за новый ответ - мне не хватает представителя для комментариев)

В OSX 10.11 папка /System/Library защищена, поэтому файлы нельзя редактировать.

Вам нужно:

  • Перезагрузитесь в режим восстановления (удерживайте CMD + r после звука запуска)
  • В режиме восстановления перейдите в меню "Утилиты"> "Терминал".
  • Бежать:csrutil disable
  • Перезагрузитесь обратно в OSX - теперь вы сможете изменить файлы
  • После этого вернитесь в режим восстановления и запуститеcsrutil enable

надеюсь, это поможет

Я создал эту суть, которая помогла мне из информации выше:

https://gist.github.com/srayhunter/5208619

Моя проблема заключалась в том, что PHP не находил программу, которую мы установили в / usr / local / bin. Как только мы сделали вышеописанное, все работало и играло хорошо на Mac OSX.

Для сервера Ubuntu в /etc/apache2/envvars, для сервера centos, в /etc/sysconfig/httpd, добавить:

export PATH=<your php cli path>

и перезапустите apache

Проблема, аналогичная той, что была у меня при установке Derby. Я решил это, открыв TextEdit. Выберите File > Open, нажмите Shift + Command + ., это позволит вам просмотреть все документы. Перейдите в каталог пользователя и найдите файл с именем ".profile" . Откройте его и добавьте строку экспорта VARIABLE= Value, например:

экспортировать DERBY_HOME=/opt/local/share/java/derby/

Сохраните документ и перезапустите свой терминал, чтобы увидеть, вступили ли изменения в силу.

Другие вопросы по тегам