5 votes

Wordpress, nginx, php-fpm : XML-RPC ne fonctionne pas

J'ai installé Wordpress avec Nginx et PHP-FPM sur mon propre serveur à l'adresse suivante https://saskia.photo

L'installation fonctionne parfaitement mais le XML-RPC (utilisé par Jetpack et les applications téléphoniques) génère l'erreur suivante :

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

Vous pouvez voir l'erreur vous-même en exécutant

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

J'ai travaillé sur Page de dépannage de Jetpack mais pas de chance.

L'erreur XML renvoyée m'amène à supposer que le XML de la requête du client est corrompu quelque part entre nginx et PHP, de sorte qu'il ne peut pas être analysé.

Voici mon fichier de configuration 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;
  }
}

Quelqu'un a-t-il rencontré un tel problème ou peut-il déceler un problème dans mes fichiers de configuration ?

8voto

Jeff Points 21

Il semble que les extensions php-xml y php-xmlrpc ne sont pas installés.

Installez-les avec :

apt-get install php-xml php-xmlrpc

ou (CentOS, RHEL etc..)

yum install php-xml php-xmlrpc

SuSE

zypper install php-xml php-xmlrpc

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X