CentOS 6.8 PHP-FPM 无法与 PHP CLI 一起正常工作

CentOS 6.8 PHP-FPM not working correctly with PHP CLI

我花了最后一天时间在谷歌上搜索这个,我的 Google-Fu 今天过得很糟糕,或者之前没有人问过这个问题。

这几天我一直在用 CentOS 6.8 设置一个 Vagrant 虚拟机,以便我在我们的网站上工作。我决定安装与我们的实时服务器上相同的软件包:Nginx、PHP-FPM 和 Percona。我删除了 PHP 5.3 并在 remi 仓库中启用了 5.6,目前已经安装:

此时我还没有发现任何问题,因为该网站 运行 非常好。但是今天我去重新索引该网站,我们使用的是 Magento,所以我出于偏好通过 CLI 来完成。命令是:

php indexer.php reindexall

输出的所有内容是:

Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p ] [-g ] [-c ] [-d foo[=bar]] [-y ] [-D] [-F [-O]]
    -c | Look for php.ini file in this directory
    -n               No php.ini file will be used
    -d foo[=bar]     Define INI entry foo with value 'bar'
    -e               Generate extended information for debugger/profiler
    -h               This help
    -i               PHP information
    -m               Show compiled in modules
    -v               Version number
    -p, --prefix 
                   Specify alternative prefix path to FastCGI process manager (default: /usr).
    -g, --pid 
                   Specify the PID file location.
    -y, --fpm-config 
                   Specify alternative path to FastCGI process manager config file.
    -t, --test       Test FPM configuration and exit
    -D, --daemonize  force to run in background, and ignore daemonize option from config file
    -F, --nodaemonize
                   force to stay in foreground, and ignore daemonize option from config file
    -O, --force-stderr
                   force output to stderr in nodaemonize even if stderr is not a TTY
    -R, --allow-to-run-as-root
                   Allow pool to run as root (disabled by default)

我从未见过这种情况。终端甚至日志中都没有错误。我尝试了其他 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 冲突?

尝试使用所需 PHP 可执行文件的完整路径。类似于:

/usr/bin/php indexer.php reindexall

我不明白你/usr/sbin/php来自哪里

# rpm -q php-cli php-fpm
php-cli-5.6.25-1.el6.remi.x86_64
php-fpm-5.6.25-1.el6.remi.x86_64

# which php
/usr/bin/php

# php -v
PHP 5.6.25 (cli) (built: Aug 31 2016 19:26:19) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

# rpm -qf /usr/sbin/php
error: file /usr/sbin/php: No such file or directory

所以你可以删除它。