PHP FastCGI 模式运行出错:Premature end of script headers

13天前 0人评论 3184人浏览

适用版本:
Plesk Onyx for Linux
Plesk 12.5 for Linux
Plesk 12.0 for Linux
Plesk 11.x for Linux


问题
1. 将PHP模式切换为FastCGI时,一个secondary PHP 运行出错:
# tailf /var/www/vhosts/domain.tld/logs/error_log
(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: index.php


或出现下面的错误:
[fcgid:warn] [pid 1175:tid 140298957072128] (104)Connection reset by peer: [client xx.xx.xx.xx:50320] mod_fcgid: error reading data from FastCGI server
[core:error] [pid 1175:tid 140298957072128] [client xx.xx.xx.xx:50320] End of script output before headers: index.php
[fcgid:warn] [pid 1174:tid 140298982250240] (104)Connection reset by peer: [client xx.xx.xx.xx:50324] mod_fcgid: error reading data from FastCG


2. Apache日志显示内存错误
# less /etc/httpd/logs/error_log
Apache/2.2.15 (Unix) DAV/2 mod_fcgid/2.3.7 mod_python/3.3.1 Python/2.6.6 mod_ssl/2.2.15 OpenSSL/1.0.0-fips SVN/1.6.11 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Errno 12] Cannot allocate memory


3. 系统日志显示suhosin警告
# less /var/log/syslog
hosting suhosin[32242]: ALERT - zend_mm_head corrupted at 0x2e02420 (attacker '203.0.113.2', file '/var/www/vhosts/example.com/httpdocs/index.php')


4. Suexec日志显示下面的错误:
# tailf /var/log/httpd/suexec_log
uid: (10033/ftpuser) gid: (504/504) cmd: cgi_wrapper
unknown error in docroot check (10033)


原因
1. PHP未使用FastCGI进行编译。
2. 服务器上没有足够的内存。
3. 域名php.ini被自定义过,含有错字,或有无效的配置。
4. /etc/passwd 文件的权限不正确。
5. 某个 php 模块不兼容。


解决方案
1. 使用SSH连接服务器,确保使用FastCGIPHP进行编译。可以使用下面的命令检查是否已启用fastcgi模块。
# /usr/local/psa/admin/bin/php_handlers_control --list
id:  display name:  version:    type:                                     cgi-bin:                php.ini:
fastcgi-5.2.17         5.2.17    5.2.17      cgi  /usr/local/php5.2.17/bin/php-cgi  /usr/local/lib/php.ini


检查PHP版本:
# /usr/local/php5.2.17-cgi/bin/php-cgi -v
PHP 5.2.17 (cgi) (built: Mar 27 2014 20:28:44)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies


如上所示,使用的是5.2.17 (cgi)。也就是说PHP只在CGI模式下运行。能够同时在CGIFastCGI模式下运行PHP如下:
# php-cgi -v
PHP 5.3.3 (cgi-fcgi) (built: Jul 12 2013 20:34:01)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd.


如果未使用FastCGI模式编译过PHP,请使用选项 --enable-fastcgi 重新编译自定义 php


2. 请使用下面的命令确保服务器上有足够的内存:
# free -m


如果服务器是一个虚拟的容器,则可以使用下面的命令检查资源限制:
# cat /proc/user_beancounters


3. 域名php.ini可能已被手动自定义过或包含某个错误。例如:将php.ini中的兆字节设置成了128MB而不是128M
备份原始的域名php.ini然后重新配置域名:
 # mv /var/www/vhosts/system/example.com/etc/php.ini /var/www/vhosts/system/example.com/etc/php.ini_orig

 # /usr/local/psa/admin/bin/httpdmng --reconfigure-vhost --vhost-name=example.com


对于Plesk 11.5和更高版本,请使用下面的命令:
 # /usr/local/psa/admin/bin/httpdmng --reconfigure-domain --domain-name=example.com


4. 请确保 /etc/passwd 文件有如下的权限:
# ls -la /etc/passwd
-rw-r--r-- 1 root root 7643 Mar  3 12:54 /etc/passwd

相关文章: 无
提交
还没有评论,快来抢沙发吧!
相关博客

锐成信息,欢迎您的到来

需要更多的了解以上产品和解决方案,请立即联系我们技术支持团队和业务专家,他们将给您带来专业的建议!

售前
支持
代理
合作
售后
支持