记又一次通过查看日志解决服务器500内部错误(xmlrpc.php)
自从上次调整了php的参数后, Forece 的 WordPress 博客几乎就再也没出现过500错误了,不过这两天自己疯狂收到服务器宕机的错误,于是又一次大排查开始了。经过重重排查,最终发现了原来是 xmlrpc.php 这个文件搞的鬼。这里写一下排查记录。
主要问题是,网站可以偶尔打开,但是90%的情况下会出现500错误,偶尔能正常打开网站,但是10秒多钟的加载时间是无法忍受的!下边开始排查:
排查方法:
1、首先查看了服务器的内存情况,用 putty 链接上服务器后,查看内存状况,发现还有很多未使用内存,也就是说和上次内存耗尽的情况出现的 500 错误不一样。照上次一样,调整php的连接参数,无效。
2、重启 lnmp 服务 + 重启服务器的情况一样,没有任何改善。
3、查看php日志,发现这条记录,不过不管如何增加 pm.start_server 都无法改善问题,日志路径 /usr/local/php/var/log (Forece 使用的是lnmp,所以有可能和其他版本的PHP位置不一样。请根据自己情况自行寻找)
[19-Oct-2018 14:05:31] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 45 total children
4、打开php中的slow log(慢记录),如果脚本超长时间,就可以自动记录到日志文件,打开方法如下:
request_slowlog_timeout = 5
slowlog = var/log/slow.log
php_admin_value[error_log] = /usr/local/php/var/log/php_errors.log
然后就发现,每条记录都带这么一句:
[19-Oct-2018 14:05:32] [pool www] pid 28463
script_filename = /home/wwwroot/default/xmlrpc.php
5、网上搜寻了下关键词 xmlrpc.php + 500 错误,然后就出现了一大堆解决办法。看来问题就在这里了。
解决方案:
1. 屏蔽XML-RPC(pingback)的功能
在functions.php中添加
add_filter('xmlrpc_enabled', '__return_false');
2. 阻止pingback端口
在functions.php中添加
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );function remove_xmlrpc_pingback_ping( $methods ) {
unset( $methods['pingback.ping'] );return $methods;}
3. nginx服务器屏蔽xmlrpc.php文件
location ~* /xmlrpc.php {
deny all;}
4. 通过.htaccess屏蔽xmlrpc.php文件的访问
# protect xmlrpcOrder Deny,AllowDeny from all
Forece 测试了上边的几种方法,发现第四种屏蔽后,网站就无法访问了,而 Nginx 的就没事。所以 Forece 的 Appache 上边的就只在 function 中屏蔽了,而 nginx 直接用的服务器配置文件屏蔽。其实测试的时候,把 xmlrpc.php 改名后,也可以解决这个问题,不过网上有人说删除这个文件后,可能会造成 wordpress 无法正常工作。我也没试过,不过多一事不如少一事。
最后附上所有的 Log 地址:
其实所有的Log地址都可以在配置文件中找到:
可以用 find 命令找这些配置文件,如:
find / -name nginx.conf
/usr/local/nginx/conf/nginx.conf
/usr/local/php/etc/php-fpm.conf
/etc/my.cnf
Nginx:
access_log /home/wwwlogs/access.log
error log /home/wwwlogs/nginx_error.log
PHP-FPM:
/usr/local/php/var/log/php_errors.log
/usr/local/php/var/log/slow.log
MySQL:
/usr/local/mysql/var/主机名.err
MySQL 的慢日志同样需要修改my.cnf 配置文件才可以开启
修改my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器,如下所示
slow_query_log =2
slow_query_log_file=/usr/local/mysql/var/mysql_slow.log
再附一个 LNMP 所有文件的地址:
https://lnmp.org/faq/lnmp-software-list.html
本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)
下一篇:没有了
- ·记又一次通过查看日志解决服务器500内部
- ·手把手教你编写抖音自动评论脚本
- ·PHP多线程,利用PHP cURL 多线程 模拟并
- ·浅谈PHP与手机APP开发(API 接口开发)
- ·PHP 防止刷流量攻击
- ·小白零基础如何自学PHP编程语言 入职初级
- ·9行代码太浪费了,5行代码足矣,不用递归
- ·php中文乱码问题及解决方法
- ·如何用PHP脚本和PEAR类创建ZIP档案文件
- ·PHP7扩展开发之传参与返回值
- ·Redis from PHP
- ·PHP 共享内存使用场景及注意点
- ·PHP常见的6个错误提示
- ·PHP程序员最常犯的11个MySQL错误
- ·PHP开发者使用Composer的五个小技巧
- ·Struts2 PHP批量扫描工具
- ·记又一次通过查看日志解决服务器500内部错
- ·手把手教你编写抖音自动评论脚本
- ·PHP多线程,利用PHP cURL 多线程 模拟并发
- ·浅谈PHP与手机APP开发(API 接口开发)
- ·PHP 防止刷流量攻击
- ·小白零基础如何自学PHP编程语言 入职初级程
- ·9行代码太浪费了,5行代码足矣,不用递归实
- ·php中文乱码问题及解决方法
- ·如何用PHP脚本和PEAR类创建ZIP档案文件
- ·PHP7扩展开发之传参与返回值
- ·Redis from PHP
- ·PHP 共享内存使用场景及注意点
- ·PHP常见的6个错误提示
- ·PHP程序员最常犯的11个MySQL错误
- ·PHP开发者使用Composer的五个小技巧