CENTOS 6.5下,删除了之前用YUM安装过的PHP,然后下载php7源码编译安装。安装成功。
但是PHP-FPM无法启动
测试配置文件,成功。
[root@aaa php-fpm.d]# /usr/local/php7/sbin/php-fpm -t
[03-Feb-2017 04:24:54] NOTICE: configuration file /usr/local/php7/etc/php-fpm.conf test is successful
开启服务,提示一堆帮助。。怎么开启啊?
[root@aaa php-fpm.d]# /usr/local/php7/sbin/php-fpm start
Usage: php-fpm [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p <prefix>] [-g <pid>] [-c <file>] [-d foo[=bar]] [-y <file>] [-D] [-F [-O]]
-c <path>|<file> 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…………………………………………省略
查看进程
[root@aaa php-fpm.d]# ps -ef | grep PHP-fpm
root 1776 1649 0 04:29 pts/0 00:00:00 grep PHP-fpm
netstat -lntp 查看端口,里面没有PHP-FPM(肯定了,没有启动)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1397/mysqld
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN 1464/Xvnc
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1424/nginx
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 1424/nginx
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1260/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1239/sshd
看命令帮助中有个参数-R
-R, --allow-to-run-as-root
Allow pool to run as root (disabled by default)
然后我运行了一下:/etc/init.d/php-fpm -R
接着执行了:/etc/init.d/php-fpm
[03-Feb-2017 04:39:16] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[03-Feb-2017 04:39:16] ERROR: FPM initialization failed
虽然初始化失败了,但是显示端口被占用,再次查看网络端口情况:
netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1787/php-fpm
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1397/mysqld
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN 1464/Xvnc
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1424/nginx
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 1424/nginx
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1260/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1239/sshd
显示PID 1787/php-fpm在监听这个端口 127.0.0.1:9000。
......我艹,当我想再去截一下PHP无法解析NGINX 502错误的时候刷新了一下页面,现在正常了,泪奔!~~>___<~~
-R
选项的作用是允许这次用root权限运行,不是给root执行权限。因为用root权限跑服务都有安全隐患(一旦被攻陷,攻击者就有了最高权限),所以php-fpm会做个检查,默认不能用root,要求自己确定要用。
所以第一次
php-fpm -R的时候
,php-fpm已经在运行了,没必要再来一次php-fpm
(其实也不行,因为第一次成功的话已经占用端口了)。端口占用了,就把占用的进程杀了。
还有
/etc/init.d/php-fpm
是脚本还是php-fpm本体呢?看题主的答案好像混淆了两者。php-fpm不支持start选项,
/usr/local/php7/sbin/php-fpm start
肯定是一堆错误信息(其实是帮助信息),支持start的是/etc/init.d/
下的那些脚本。