Wordpress XML-RPC POST 返回 32700 错误,安装了 php-xml 扩展
Wordpress XML-RPC POST returning 32700 error with php-xml extension installed
我正在使用 HTTPie 向我的本地 Wordpress 安装发出 POST
请求,目的是检查 XML-RPC 是否可用和启用。
http --verify=no POST https://crmpicco.localhost/xmlrpc.php data="<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>admin</value></param><param><value>pass</value></param></params></methodCall>"
这个returns一个200
,但是响应有一个faultCode:
HTTP/1.1 200 OK
Connection: close
Content-Length: 403
Content-Type: text/xml; charset=UTF-8
Date: Fri, 08 Mar 2019 03:18:43 GMT
Server: Apache/2.4.35 (Unix) OpenSSL/1.0.2p PHP/7.2.11
X-Powered-By: PHP/7.2.11
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>-32700</int></value>
</member>
<member>
<name>faultString</name>
<value><string>parse error. not well formed</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
其他有此问题的人指出 php-xml
扩展不可用,但是当我执行 php -m | grep -i xml
时它显示为已安装:
libxml
SimpleXML
xml
xmlreader
xmlrpc
xmlwriter
我错过了什么?
为此我不得不退而求其次使用 cURL。我不确定 HTTPie 到底做错了什么,或者它在这方面是否有限制,但是它与 cURL 一起使用:
curl -k -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>user</value></param><param><value>pass</value></param></params></methodCall>' https://crmpicco.localhost/xmlrpc.php
我有同样的问题,对 wordpress API 的调用适用于 phpxmlrpc-4.0.0,但有一些关于已弃用函数的警告,所以我升级到 phpxmlrpc-4.4.1,然后得到这个 "parse error. not well formed"错误
更新:
我刚刚找到了解决方法:
在文件 "lib/xmlrpc.inc" 中,更改编码设置:
发件人:
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'ISO-8859-1';
收件人:
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'UTF-8';
另一个节点是:设置
$xml_rpc_client->request_charset_encoding="UTF-8"
只会让我的文字内容变得一团糟
我正在使用 HTTPie 向我的本地 Wordpress 安装发出 POST
请求,目的是检查 XML-RPC 是否可用和启用。
http --verify=no POST https://crmpicco.localhost/xmlrpc.php data="<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>admin</value></param><param><value>pass</value></param></params></methodCall>"
这个returns一个200
,但是响应有一个faultCode:
HTTP/1.1 200 OK
Connection: close
Content-Length: 403
Content-Type: text/xml; charset=UTF-8
Date: Fri, 08 Mar 2019 03:18:43 GMT
Server: Apache/2.4.35 (Unix) OpenSSL/1.0.2p PHP/7.2.11
X-Powered-By: PHP/7.2.11
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>-32700</int></value>
</member>
<member>
<name>faultString</name>
<value><string>parse error. not well formed</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
其他有此问题的人指出 php-xml
扩展不可用,但是当我执行 php -m | grep -i xml
时它显示为已安装:
libxml
SimpleXML
xml
xmlreader
xmlrpc
xmlwriter
我错过了什么?
为此我不得不退而求其次使用 cURL。我不确定 HTTPie 到底做错了什么,或者它在这方面是否有限制,但是它与 cURL 一起使用:
curl -k -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>user</value></param><param><value>pass</value></param></params></methodCall>' https://crmpicco.localhost/xmlrpc.php
我有同样的问题,对 wordpress API 的调用适用于 phpxmlrpc-4.0.0,但有一些关于已弃用函数的警告,所以我升级到 phpxmlrpc-4.4.1,然后得到这个 "parse error. not well formed"错误
更新: 我刚刚找到了解决方法: 在文件 "lib/xmlrpc.inc" 中,更改编码设置:
发件人:
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'ISO-8859-1';
收件人:
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'UTF-8';
另一个节点是:设置
$xml_rpc_client->request_charset_encoding="UTF-8"
只会让我的文字内容变得一团糟