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,目前已经安装:
- php.x86_64 (5.6.25-1.el6.remi)
- php-cli.x86_64 (5.6.25-1.el6.remi)
- php-普通.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
输出的所有内容是:
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
所以你可以删除它。
我花了最后一天时间在谷歌上搜索这个,我的 Google-Fu 今天过得很糟糕,或者之前没有人问过这个问题。
这几天我一直在用 CentOS 6.8 设置一个 Vagrant 虚拟机,以便我在我们的网站上工作。我决定安装与我们的实时服务器上相同的软件包:Nginx、PHP-FPM 和 Percona。我删除了 PHP 5.3 并在 remi 仓库中启用了 5.6,目前已经安装:
- php.x86_64 (5.6.25-1.el6.remi)
- php-cli.x86_64 (5.6.25-1.el6.remi)
- php-普通.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
输出的所有内容是:
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
所以你可以删除它。