Переменная среды $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().
- getenv: http://php.net/manual/en/function.getenv.php
putenv: http://www.php.net/manual/en/function.putenv.php
$ path = getenv ('PATH'); putenv ("PATH = $ path: / new_path_that_you_want_to_add");
Важное примечание для 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/
Сохраните документ и перезапустите свой терминал, чтобы увидеть, вступили ли изменения в силу.