PHP CGI 报错是一个常见的问题,可能由多种原因引起,以下是一些常见的 PHP CGI 报错及其解决方法:
错误代码 | 可能原因 | 解决方法 | |
502 Bad Gateway | 请求的 PHPCGI 已经执行,但由于读取资源等问题没有执行完毕而终止 | 检查 PHP 和 Nginx 的相关配置,如 fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout 等参数设置是否合理;查看 PHP 日志文件,查找是否有相关的错误信息。 | |
504 Gateway Timeout | 没有请求到可以执行的 PHPCGI | 确认 PHPFPM 服务是否正常启动,可通过ps aux | grep phpfpm 命令查看;检查 nginx 配置文件中 PHP 脚本的处理方式是否正确,确保正确指向了 PHPFPM 进程或可执行文件。 |
FastCGI request record is too big | FastCGI 请求记录的大小超过了 Nginx 的限制 | 调整 Nginx 配置文件中的 fastcgi_buffer_size 和 fastcgi_buffers 参数,增加其值以适应较大的请求记录。 | |
HTTP 500: The FastCGI process exceeded request timeout | FastCGI 进程处理请求的时间超过了预设的超时时间 | 增加 FastCGI 的超时时间,在 Nginx 的配置文件中设置 fastcgi_read_timeout 和 proxy_read_timeout 参数。 | |
cachetool opcache:status fcgi=/tmp/phpcgi.sock 报错:In FastCGI.php line 114: Error: No input file specified | FastCGI 配置问题,未指定正确的 PHPFPM 套接字文件路径 | 确保 PHPFPM 的配置文件中正确设置了套接字文件路径,并且该路径与 Nginx 配置文件中的 fastcgi_pass 参数一致。 | |
413 Request Entity Too Large | 客户端发送的请求实体(如上传的文件)超过了服务器接收的最大限制 | 增加客户端请求体的大小限制,在 Nginx 的配置文件中设置 client_max_body_size 参数。 |
FAQs
Q1: 如何优化 PHP CGI 的性能?

A1: 优化 PHP CGI 性能的方法包括调整缓冲区大小、增加超时时间、启用缓存等,具体措施如下:
调整缓冲区大小:增加 fastcgi_buffer_size 和 fastcgi_buffers 的值,以适应较大的请求记录。
增加超时时间:设置 fastcgi_read_timeout 和 proxy_read_timeout 参数,避免因超时而中断请求。
启用缓存:使用 Nginx 的 FastCGI 缓存功能,减少重复请求的处理时间。
Q2: 如何检查 PHP CGI 进程是否正常工作?
A2: 可以通过以下步骤检查 PHP CGI 进程是否正常工作:

使用ps aux | grep phpcgi
命令查看系统中是否存在 PHP CGI 进程,如果没有找到相关进程,可能是 PHP CGI 没有正确启动或已崩溃。
检查 Nginx 的错误日志和访问日志,查看是否有与 PHP CGI 相关的错误信息或警告。
如果使用的是 PHPFPM,可以使用phpfpm status
命令查看 FPM 的状态和进程信息,确保有足够的子进程在运行且状态正常。
