Nginx

Wordpress、nginx、php-fpm:XML-RPC 不工作

  • January 18, 2020

我已經在我自己的伺服器上安裝了帶有 Nginx 和 PHP-FPM 的 Wordpress,地址為https://saskia.photo

安裝效果很好,但 XML-RPC(Jetpack 和手機應用程序使用)拋出以下錯誤:

<?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>

您可以通過執行自己查看錯誤

curl -A "Jetpack by WordPress.com" -is -H 'Content-Type: text/xml' --data '<?xml version="1.0"?><methodCall><methodName>demo.sayHello</methodName><params></params></methodCall>' 'https://saskia.photo/xmlrpc.php' && echo

我已經完成了Jetpack 的故障排除頁面,但沒有運氣。

返回的 XML 錯誤使我推測客戶端請求 XML 在 nginx 和 PHP 之間的某處被損壞,因此無法解析。

這是我的 nginx 配置文件

server {
 listen      80;
 listen      [::]:80;
 server_name saskia.photo;
 rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
 listen                443 ssl http2;
 listen                [::]:443 ssl http2;
 server_name           saskia.photo;
 ssl_certificate       /etc/letsencrypt/live/saskia.photo/fullchain.pem;
 ssl_certificate_key   /etc/letsencrypt/live/saskia.photo/privkey.pem;

 root                  /srv/wordpress/;
 charset               utf-8;

 client_max_body_size 64M;

 # Deny access to any files with a .php extension in the uploads directory
 location ~* /(?:uploads|files)/.*\.php$ {
   deny all;
 }

 location / {
   index index.php index.html index.htm;
   try_files $uri $uri/ /index.php?$args;
 }

 location ~* \.(gif|jpg|jpeg|png|css|js)$ {
   expires max;
 }

 location ~ \.php$ {
   try_files $uri =404;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_index index.php;
   fastcgi_pass  unix:/var/run/php/wordpress.sock;
   fastcgi_param   SCRIPT_FILENAME
     $document_root$fastcgi_script_name;
   include       fastcgi_params;
 }
}

有沒有人看到過這樣的問題,或者可以在我的配置文件中發現問題?

看起來像擴展php-xml並且php-xmlrpc沒有安裝。

安裝它們:

apt-get install php-xml php-xmlrpc

或(CentOS、RHEL 等)

yum install php-xml php-xmlrpc

蘇塞

zypper install php-xml php-xmlrpc

引用自:https://serverfault.com/questions/824336