月度归档:2014年11月

mediawiki 部分页面打开出现502 bad gateway错误解决

在ubuntu 14.04/linux Mint 17 上搭建nginx + php5.5.9 + mediawiki后,当访问 /index.php/特殊:上传文件 页面时出现了502 bad gateway错误,在/var/log/nginx/error.log中发现如下异常:

2014/11/26 00:29:23 [error] 6751#0: *11 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: upstream: "fastcgi://unix:/var/run/php5-fpm.sock:"

google了很多,发现了很多解决办法,有的说是请求头过大,有的说是php脚本执行时间太长导致nginx将其结束,各种所说方案试过之后发现无任何效果,错误依旧。后来偶然发现有人说opcache和xcache不能共存,然后调查是否php同时加载了opcache和xcache,执行,

sudo gedit /etc/php5/fpm/php.ini

发现有

;...
[opcache]
; Determines if Zend OPCache is enabled
;opcache.enable=0
; ...
[xcache-common]
;; non-Windows example:
extension = xcache.so
;; ...

再次查看,

sudo ls /etc/php5/fpm/conf.d

发现,

05-opcache.ini
20-xcache.ini

打开上述两个文件,
发现05-opcache.ini中有,

; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so

20-xcache.ini中有,

; configuration for php Xcache module

[xcache-common]
;; non-Windows example:
extension = xcache.so
;; Windows example:
; extension = php_xcache.dll
;...

也就是说,php确实同时加载了opcache.so和xcache.so. 我选择使用的是xcache,那么我将05-opcache.ini中opcache.so的加载项注释掉,改为,

; configuration for php ZendOpcache module
; priority=05
;zend_extension=opcache.so

然后重启nginx和php5-fpm,

sudo service php5-fpm restart
sudo service nginx restart

重新访问文件上传页面 /index.php/特殊:上传文件 , 错误不再出现。