php-fpm的启动与关闭

本文介绍了在PHP5.3.3版本中php-fpm的信号控制方式,包括如何启动、关闭、重启php-fpm以及如何查看进程数。由于该版本的php-fpm不再支持旧命令,因此文章详细解释了如何通过发送不同信号来实现对php-fpm的各种操作。

php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload|quit|restart|logrotate)等命令,需要使用信号控制:

master进程可以理解以下信号

INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:

1  启动php-fpm

  在linux下,命令为/usr/local/php/sbin/php-fpm

2  若要查看关于php-fpm的各个命令行选项,可以使用

  /usr/local/php/sbin/php-fpm -h

3  php-fpm 关闭:
   kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

 或 kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

4  php-fpm 重启:
   kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

5  查看php-fpm进程数:

   ps -ef | grep -c php-fpm


### PHP8.0 php-fpm 无法启动的解决方案及错误原因分析 PHP-FPMPHP 的 FastCGI 进程管理器,负责处理来自 Web 服务器(如 Nginx 或 Apache)的请求。当 `php80-php-fpm` 无法启动时,通常由以下几种常见原因引起: #### 1. 配置文件错误 PHP-FPM 的配置文件位于 `/etc/php/8.0/fpm/php-fpm.conf` 或 `/etc/php-fpm.d/www.conf`。如果配置文件中存在语法错误或不正确的参数设置,可能导致启动失败。例如,引用中提到的错误信息: ``` ERROR: [/usr/local/php5/etc/php-fpm.conf:144] value is NULL for a ZEND_INI_PARSER_ENTRY [^2] ``` 这表明在解析配置文件时,某个值为空或未正确设置。需要检查以下内容: - 确保所有配置项均被正确赋值。 - 检查是否有遗漏的分号或多余的空格。 可以通过以下命令验证配置文件是否正确: ```bash php80-php-fpm --test ``` #### 2. 端口冲突 PHP-FPM 默认监听 `127.0.0.1:9000`,如果该端口已被其他服务占用,会导致启动失败。引用中提到类似问题: ``` [18-Oct-2015 21:54:04] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98) [^5] ``` 解决方法: - 使用以下命令检查端口占用情况: ```bash netstat -tulnp | grep 9000 ``` - 如果发现其他进程占用了 9000 端口,可以停止该进程或修改 PHP-FPM 的监听地址和端口。例如,在 `www.conf` 文件中将 `listen` 参数更改为: ```ini listen = 127.0.0.1:9001 ``` #### 3. 权限问题 PHP-FPM 启动时需要对日志文件、套接字文件等拥有写权限。如果权限不足,可能导致启动失败。确保以下目录和文件的权限正确: - 日志目录:`/var/log/php8.0-fpm/` - 套接字文件:`/run/php/php8.0-fpm.sock` 可以通过以下命令调整权限: ```bash chown -R www-data:www-data /var/log/php8.0-fpm/ chmod -R 755 /var/log/php8.0-fpm/ ``` #### 4. 扩展加载问题 某些 PHP 扩展可能当前版本不兼容,导致启动时出现 `Segmentation fault` 错误。引用中提到类似问题: ``` Segmentation fault $php_fpm_BIN $php_opts [^1] ``` 解决方法: - 检查 `php.ini` 文件中是否启用了不必要的扩展。 - 尝试禁用所有扩展后重新启动 PHP-FPM,逐步排查问题扩展。 #### 5. 系统资源限制 高并发场景下,系统资源不足可能导致 PHP-FPM 启动失败。引用中提到类似问题: ``` 因为这个机制,在高并发的站点中,经常导致 502 错误 [^4] ``` 解决方法: - 调整 PHP-FPM 的进程池配置,例如增加 `pm.max_children` 和 `pm.start_servers` 的值。 - 检查系统资源限制,确保有足够的内存和 CPU 资源。 #### 6. 其他潜在问题 - **SELinux**:如果系统启用了 SELinux,可能会阻止 PHP-FPM 正常运行。可以通过临时关闭 SELinux 测试: ```bash setenforce 0 ``` - **依赖库缺失**:某些必要的动态链接库可能未安装。可以通过以下命令检查: ```bash ldd $(which php80-php-fpm) ``` --- ### 示例代码:检查 PHP-FPM 配置并尝试启动 以下脚本可用于检查 PHP-FPM 配置并尝试启动服务: ```bash #!/bin/bash # 测试配置文件 php80-php-fpm --test # 检查端口占用 netstat -tulnp | grep 9000 # 修改监听端口 sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9001/' /etc/php/8.0/fpm/pool.d/www.conf # 重启服务 systemctl restart php80-php-fpm ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值