使用 CLI 时,我遇到了 PHP 版本问题。当我以 root 身份登录并使用时:
php -v
我收到一条信息,表明 php 正在 CLI 模式下运行,这很好,但一旦使用,sudo php -v
我就会得到 php-fcgi 版本,这会破坏我的部分代码。问题是我已将 Supervisor 设置为调用某些 php 进程(Laravel 队列),但不幸的是,它在 fcgi 模式下被调用,因此某些变量不可用,因此我的代码中断。有没有什么解决方法?我使用的是 CentOS 6.5。
答案1
@blackhatblade 上面的内容很可能是正确的。要测试这一点,请以 root 和非 root 用户身份登录并尝试以下命令
# 哪个 php $ 哪个 php
“which” 应该会告诉您路径。如果它们不同,则不合格的“php”将执行在每个目录列表中找到的第一个。
您的 root 用户也可能有一个重新映射 php 的 shell“别名”。要检查这一点,请尝试命令“别名”
最后,您的 php 可执行文件可能是某种包装器,它会检查 root 执行环境,并将您转到 fcgi 版本。通过检查您在第一步中找到的完全限定路径(来自“哪个”)来检查这一点,并查看它是否是一个根据运行者执行某些鬼鬼祟祟操作的 shell 脚本。
答案2
使用 sudo 时 $PATH 的内容可能不同。找到正确的二进制文件并提供完整路径。
如果您的 php 程序被直接调用,请将其 shebang 编辑为 cli 二进制文件的完整路径。
答案3
您应该在中设置路径变量/etc/environment
。并确保 root 和普通用户具有相同的 PATH 变量。
尝试
sudo nano /etc/environment
编辑文件之前请先进行备份。