【发布时间】:2017-01-10 13:15:38
【问题描述】:
我最后一天用谷歌搜索了这个,要么我的 Google-Fu 过得不好,要么之前没有人问过这个问题。
在过去的几天里,我一直在用 CentOS 6.8 设置一个 Vagrant VM,以便我在我们的网站上工作。我决定在我们的实时服务器上安装相同的软件包:Nginx、PHP-FPM 和 Percona。我在 remi repo 中删除了 PHP 5.3 并启用了 5.6,目前已安装:
- php.x86_64 (5.6.25-1.el6.remi)
- php-cli.x86_64 (5.6.25-1.el6.remi)
- php-common.x86_64 (5.6.25-1.el6.remi)
- php-fpm.x86_64 (5.6.25-1.el6.remi)
- php-mbstring.x86_64 (5.6.25-1.el6.remi)
- php-mcrypt.x86_64 (5.6.25-1.el6.remi)
- php-mssql.x86_64 (5.6.25-1.el6.remi)
- php-mysqlnd.x86_64 (5.6.25-1.el6.remi)
- php-pdo.x86_64 (5.6.25-1.el6.remi)
- php-pecl-jsonc.x86_64 (1.3.10-1.el6.remi.5.6)
- php-pecl-zip.x86_64 (1.13.4-1.el6.remi.5.6)
- php-xml.x86_64 (5.6.25-1.el6.remi)
现在我还没有意识到任何问题,因为网站运行得非常好。但是今天我去重新索引站点,我们使用的是 Magento,所以我出于偏好通过 CLI 进行。命令是:
php indexer.php reindexall
所有这些输出是:
用法:php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p ] [-g ] [-c ] [-d foo [=bar]] [-y ] [-D] [-F [-O]]
-c |在此目录中查找 php.ini 文件
-n 不使用 php.ini 文件
-d foo[=bar] 定义 INI 条目 foo,值为 'bar'
-e 为调试器/分析器生成扩展信息
-h 这个帮助
-i PHP 信息
-m 显示编译在模块中
-v 版本号
-p,--前缀
指定 FastCGI 进程管理器的替代前缀路径(默认值:/usr)。
-g,--pid
指定 PID 文件位置。
-y,--fpm-配置
指定 FastCGI 进程管理器配置文件的替代路径。
-t, --test 测试 FPM 配置并退出
-D, --daemonize 强制在后台运行,并忽略配置文件中的 daemonize 选项
-F, --nodaemonize
强制停留在前台,并忽略配置文件中的守护进程选项
-O, --force-stderr
即使 stderr 不是 TTY,在 nodaemonize 中强制输出到 stderr
-R, --allow-to-run-as-root
允许池以 root 身份运行(默认禁用)
我从未见过这种情况发生。终端甚至日志中都没有错误。我尝试了其他 php 脚本,甚至创建了一个我知道会运行的非常简单的“hello world”测试,但仍然得到相同的输出。所以我做了一些挖掘,过了一会儿注意到我的php -v 显示PHP 5.6.25 (fpm-fcgi) 而不是PHP 5.6.25 (cli)。
我尝试删除 php-fpm 包,然后修复了 php -v 的输出,并启用了我的简单测试脚本,但这并不是真正的修复,因为这让我没有 php-fpm。
我真的希望这只是我错过的一个简单设置,因为它显然在我们的实时服务器上运行良好。我确实询问了我们的主机支持,他们以前也没有见过。
所以,在所有这些背景之后,我想一个简短的问题是如何安装 php-fpm 而不会与 php-cli 冲突?
【问题讨论】:
-
当您想查看别名(软链接)指向的位置时,可以这样使用:
which php我猜输出类似于/usr/bin/php5-fpm- 这是客户端/控制台使用的错误 SAPI 二进制文件. -
@DanFromGermany 它输出为
/usr/sbin/php,但如果我执行/usr/bin/php并且该命令有效