超级用户的 PHP 版本是 fcgi 而不是 cli

超级用户的 PHP 版本是 fcgi 而不是 cli

使用 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

编辑文件之前请先进行备份。

相关内容