Мне нужно, чтобы моя переменная среды PATH включала / usr / local / bin при просмотре с PHP, чтобы я мог выполнять двоичные файлы, которые находятся в / usr / local / bin, с помощью exec () в коде PHP, не записывая их полный путь, например exec ("ffmpeg");
Если с php я запускаю echo getenv ("ПУТЬ"), он выводит: / sbin: / usr / sbin: / bin: / usr / bin
Однако, если я вхожу на сервер как root через ssh и пишу в терминале echo $ PATH, я получаю: // sbin: // bin: / usr / local / sbin: / usr / local / bin: / sbin: / bin : / usr / sbin: / usr / bin: / корень / bin
Таким образом, / usr / local / bin уже включен, когда я вхожу в командную строку, но не при запуске PHP.
Итак, как мне добавить каталоги в переменную среды path таким образом, чтобы они распознавались также и PHP?
Я попытался добавить SetEnv PATH $ PATH: / usr / local / bin в /var/www/vhosts/mydomain.net/conf/vhost.conf (который содержит другие директивы, которые делать действуют), но ничего не меняет. Я также попытался добавить это в файл .htaccess (не знаю, имеет ли это смысл), но это тоже не сработало.
Я уже искал на форуме и нашел много похожих или идентичных вопросов, но без ответа, или, по крайней мере, ни один из них не работает.
В сценарии запуска apache попробуйте экспортировать собственный путь.
IIRC, при запуске Apache по умолчанию использует обычные окружения. Таким образом, даже изменение его значения в пользовательском env не поможет.
Ну, в зависимости от ваших потребностей вы можете либо установить его в скрипте (Ссылка на документацию)
<?php
// Works as of PHP 4.3.0
set_include_path('/inc');
// Works in all PHP versions
ini_set('include_path', '/inc');
?>
или вы можете установить его в самом файле php.ini (Ссылка на документацию)
include_path=".:/php/includes
отредактируйте php.ini, в предложении include_path укажите, по какому пути php принимает скрипт.