Использование MAMP + MAMP Pro 3.5 для локального развития. Используя файл envvars
, я поставляю свой собственный PATH, который отличается от PATH для любого другого пользователя или цели. Давайте притворимся, что это /my/unique/custom/path
.
Я разместил следующий файл на локальном сайте разработки:
<ol> <li><?php print $_SERVER['PATH']; ?></li> <li><?php print $_ENV['PATH']; ?></li> <li><?php print exec('echo $PATH'); ?></li> </ol>
И это результат:
- / Мой / уникальный / пользовательский / путь
- / Мой / уникальный / пользовательский / путь
- / USR / гну / бен: / USR / местные / бен: / бен: / USR / бен :.
Поэтому PHP видит, что переменная среды PATH должна быть моей, но почему-то она не используется для запуска команд.
Что может быть причиной этого? По-видимому, что №3 PATH – это путь по умолчанию для bash, если вы его не задали, я думаю? Что может заставить его получить или удалить или никогда не устанавливать, учитывая, что PHP правильно это видит?
ОБНОВЛЕНИЕ 1:
Выполнение print_r(shell_exec('env'))
получает меня и ничего больше:
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 PHP_FCGI_CHILDREN=4 PWD=/path/to/website/files SHLVL=1 PHP_FCGI_MAX_REQUESTS=200 _=/usr/bin/env
Довольно голый. Похоже, что переменная $ _ является большой подсказкой, но я пока не знаю, что.
ОБНОВЛЕНИЕ 2:
Хорошо, так что это заканчивается тем, что голая среда в норме. Вот почему вы устанавливаете переменные среды в envvars
в первую очередь. Но envvars
явно работает, иначе этот путь не появится в $_SERVER
. Итак, что-то происходит между временем envvars
и временем запуска моего собственного кода.