Переменная среды $ PATH для apache2 на Mac - PullRequest
28 голосов
/ 26 июля 2011

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

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

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

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

  • ~ / .bash_profile
  • ~ / .profile
  • / и т.д. / путь
  • / и т.д. / 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 ]

32 голосов
/ 26 июля 2011

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

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

4 голосов
/ 26 июля 2011

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

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

3 голосов
/ 16 июня 2016

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

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

Вам необходимо:

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

Надеюсь, что поможет

1 голос
/ 21 марта 2013

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

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

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

0 голосов
/ 28 февраля 2013

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

export DERBY_HOME = / opt / local / share / java / derby /

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

0 голосов
/ 31 января 2012

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

export PATH=<your php cli path>

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

...