php-fpm启动以后,没有出现9000端口

本文详细记录了一次解决Nginx与PHP-FPM配置问题的过程,包括使用端口与sock文件两种方式的对比,以及最终通过修改配置文件实现php脚本正常解析的解决方案。

最近在复现一个php扩展的后门,需要搭建Nginx+php环境,nginx我是用源码裸装的,不带任何第三方模块。

php-cli和php-fpm 则是通过ubuntu的标准apt-get命令安装的。

随后需要修改nginx的nginx.conf文件让其支持php脚本解析。

经查询网上的配置有两种,一种是

支持127.0.0.1:9000

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   /usr/local/nginx/html/$fastcgi_script_name;
    include        fastcgi_params;
}

另一种是使用sock文件

location ~ .php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   unix:/var/run/php-fpm/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

刚开始使用第一种9000端口的方式进行配置,php解析不了,后经过查询php-fpm日志,发现有sock

[17-Sep-2019 00:23:02] NOTICE: fpm is running, pid 5617
[17-Sep-2019 00:23:02] NOTICE: ready to handle connections
[17-Sep-2019 00:23:02] NOTICE: systemd monitor interval set to 10000ms
[17-Sep-2019 00:31:28] ERROR: An another FPM instance seems to already listen on /var/run/php5-fpm.sock
[17-Sep-2019 00:31:28] ERROR: FPM initialization failed
[17-Sep-2019 00:37:34] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful

随后在nginx配置文件中改用第二种sock文件交互的模式,发现还是页面解析不了。

最后找到/etc/php5/fpm/pool.d/www.conf 配置文件,将listen改为127.0.0.1:9000

又将nginx改回用端口监听的方式,重启nginx和php-fpm以后,终于可以解析php脚本了。。

root@ubuntu:/usr/local/nginx# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
root@ubuntu:/usr/local/nginx# pgrep nginx|xargs kill -s 9
root@ubuntu:/usr/local/nginx# vim conf/nginx.conf
root@ubuntu:/usr/local/nginx# sbin/nginx 
root@ubuntu:/usr/local/nginx# 

nginx.conf配置文件

 server {
        listen       80;
        server_name  localhost;
        root   html;
        index  index.php;
        location ~\.php$ {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

/etc/php5/fpm/pool.d/www.conf文件修改的地方:

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

在这里插入图片描述

<think>嗯,用户让我介绍一下PHP-FPM默认使用9000端口的情况。我需要先回忆一下PHP-FPM的基本知识,然后确定为什么默认端口9000,以及相关的配置细节。 首先,PHP-FPM是什么?它是PHP FastCGI进程管理器,用于处理PHP脚本的请求,通常与Nginx或Apache配合使用。默认情况下,它监听9000端口,但用户可能需要修改这个端口,比如在多个应用共存时避免冲突。 接下来,我需要确认默认端口确实是9000,以及如何修改它。记得在PHP-FPM的配置文件中,通常是www.conf文件,里面有一个listen指令设置端口。用户可能需要知道修改后如何重启服务,还有和Web服务器配置的关联。 另外,安全性也是一个点。默认端口如果暴露在外可能会有风险,所以用户可能需要配置防火墙或者使用Unix套接字代替TCP端口。不过,有时候TCP端口在负载均衡或者容器环境中更方便。 用户可能的场景是什么?他们可能在设置服务器环境时遇到了端口冲突,或者想了解默认设置的原因。也可能在配置Web服务器时不知道如何正确指向PHP-FPM端口,导致502错误之类的问题。 需要解释清楚默认配置,如何检查和修改端口,以及注意事项。可能还要提到Unix套接字和TCP端口的选择,适用场景的区别。比如,Unix套接字在本地通信可能更快,而TCP适合分布式环境。 最后,确保语言通俗易懂,不用太技术化的术语,但也要准确。可能需要分步骤说明,比如找到配置文件的位置,修改哪一行,如何重启服务,并验证是否生效。</think>PHP-FPMPHP FastCGI Process Manager)是一个用于管理 PHP 进程的工具,通常与 Web 服务器(如 Nginx 或 Apache)配合使用,以处理 PHP 脚本的请求。默认情况下,PHP-FPM 会监听 **9000 端口**,通过 FastCGI 协议与 Web 服务器通信。 --- ### **为什么默认是 9000 端口?** - 9000PHP-FPM 的**历史惯例端口**,早期版本即采用此端口,后续版本延续了这一默认设置。 -端口属于非特权端口(>1024),无需 root 权限即可绑定,适合大多数部署场景。 --- ### **如何配置 PHP-FPM 端口?** PHP-FPM 的配置文件通常位于 `/etc/php-fpm.d/www.conf`(路径可能因系统而异),通过修改 `listen` 参数可更改端口: ```ini ; 默认配置 listen = 127.0.0.1:9000 ; 修改为其他端口(例如 9001) listen = 127.0.0.1:9001 ``` 修改后需重启 PHP-FPM 服务: ```bash sudo systemctl restart php-fpm ``` --- ### **关键注意事项** 1. **Web 服务器配置同步** 修改 PHP-FPM 端口后,需同步更新 Web 服务器(如 Nginx/Apache)的 FastCGI 配置,确保其指向新端口。例如 Nginx 的配置: ```nginx location ~ \.php$ { fastcgi_pass 127.0.0.1:9001; # 与 PHP-FPM 端口一致 include fastcgi_params; } ``` 2. **安全性** - 默认情况下,PHP-FPM 绑定在 `127.0.0.1`(仅本地访问),避免直接暴露到公网。 - 若需远程访问,应结合防火墙规则限制访问源 IP。 3. **替代方案:Unix Socket** 除 TCP 端口外,PHP-FPM 也支持通过 **Unix Socket** 通信(性能更佳): ```ini listen = /var/run/php-fpm.sock ``` 需确保 Web 服务器有权限访问该 Socket 文件。 --- ### **常见问题** - **端口冲突**:若 9000 被其他服务占用,PHP-FPM启动失败,需修改端口或终止冲突进程。 - **性能调优**:调整 `pm.max_children`、`pm.start_servers` 等参数可优化 PHP-FPM 的进程管理。 如果需要更具体的配置指导或问题排查,可以进一步描述你的使用场景! 😊
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值