我需要我的 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在哪个路径下执行脚本。