如何在 CentOS 中设置 PATH 以使其在 PHP 中可见

如何在 CentOS 中设置 PATH 以使其在 PHP 中可见

我需要我的 PATH 环境变量在从 PHP 看到时包含 /usr/local/bin,这样我就可以使用 PHP 代码中的 exec() 执行 /usr/local/bin 中的二进制文件,而无需编写它们的完整路径,例如 exec("ffmpeg");

如果我从 php 运行 echo getenv("PATH"),它会输出:/sbin:/usr/sbin:/bin:/usr/bin

但是,如果我通过 ssh 以 root 身份登录服务器,并在终端 echo $PATH 中写入,我得到: //sbin://bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

因此,当我登录命令行时,/usr/local/bin 已经包含在内,但运行 PHP 时却没有包含在内。

那么,如何将目录添加到路径环境变量中,以便 PHP 也能识别它们?

我尝试将 SetEnv PATH $PATH:/usr/local/bin 添加到 /var/www/vhosts/mydomain.net/conf/vhost.conf (其中包含其他指令)有效果),但它并没有改变任何东西。我也尝试将其添加到 .htaccess 文件中(不知道是否有意义),但它也没有起作用。

我已经搜索了论坛并发现了很多类似或相同的问题,但没有答案,或者至少没有有效的答案。

答案1

在您的 apache 启动脚本中,尝试导出您的自定义路径。

我记得,Apache 启动时默认使用通用环境变量。因此,即使在用户环境中更改其值也无济于事。

答案2

编辑 php.ini 中的include_path子句,指明php在哪个路径下执行脚本。

答案3

嗯,根据你的需要,你可以在脚本中设置它(文档链接

<?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

相关内容