问题环境:
- cPanel 虚拟主机
- Apache
- WordPress 5.5.1
- PHP 7.4
- MySQL
当博主尝试使用 python-wordpress-xmlrpc 模块上传图片至WP时,命令行报错 domain.com/xmlprc.php 404 Not Found
但是当使用浏览器访问domain.com/xmlprc.php时却发现并没有404错误,浏览器提示XML-RPC server accepts POST requests only.
,意思是只接受POST数据
于是我尝试使用 postman 向xmlrpc提交POST数据,错误重现,报错404。
网上找了下解决方案,大部分解决方式是.htaccess
文件放行xmlrpc请求,经确认并不是Apache拦截了xmlrpc请求,不然理论上浏览器直接访问xmlrpc文件也是404
考虑到开放xmlrpc会有一定的风险,会不会是cPanel的某些安全组件拦截了xmlrpc的POST请求呢?
经过一番搜索,终于找到了罪魁祸首,cPanel中的ModSecurity
功能,将此功能关闭,即可正常使用xmlrpc功能啦~
不过开放xmlrpc
有一定风险,建议将xmlrpc.php
文件路径修改一下。