Назад | Перейти на главную страницу

как установить PATH в CentOS, чтобы он был виден в PHP

Мне нужно, чтобы моя переменная среды 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 принимает скрипт.