Как правильно установить PATH в PHP

Я пытаюсь установить PATH Переменная окружения в PHP, и я столкнулся с неожиданным поведением:

var_dump(getenv('PATH'));
system('echo $PATH');
system('which true 2>&1');
system('PATH="$PATH" which true 2>&1');

результаты в

string(23) "/usr/local/bin:/usr/bin"
/usr/local/bin:/usr/bin
which: no true in ((null))
/usr/bin/true

Это также отражается на выбранных исполняемых файлах, которые /usr/bin скорее, чем /usr/local/bin,

Моя цель (очевидно) изменить путь к некоторому исполняемому файлу, вызываемому во время сценария. Но я также не могу напрямую изменить путь к исполняемому файлу, путь которого я хочу изменить, потому что он вызывается косвенно некоторым двоичным файлом. Я не могу просто использовать PATH="$PATH" вариант без исправления внешней библиотеки.

Поскольку очевидные обходные пути неприменимы, и поскольку я нахожу это очень любопытным, я хотел бы объяснить, почему это происходит и как (или если) можно установить PATH таким образом, который передается в system или же exec звонки.

Сценарий запускается через php-fpm, на случай, если это будет интересно.

0 ответов

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