web-dev-qa-db-fra.com

Le téléchargement d'images sur plusieurs sites a échoué l'erreur HTTP

Juste pour vous renseigner sur ma situation.

Exécution de la version multi-site de WordPress: Installation propre de la version 3.5.2.

Zéro plugins tiers. Tous mes plugins ont été désactivés pour le débogage.

Utilisation de Mappage de domaine WordPress MU pour plusieurs TLD différents sur le réseau.

J'ai également usurpé toutes les URL du réseau pour servir un fichier à partir de mon serveur local, plutôt que du réseau actif existant.

Fichier d'hôtes: vi /etc/hosts/

Peut contenir quelque chose comme:

127.0.0.1 domain-a.com
127.0.0.1 www.domain-a.com
127.0.0.1 domain-b.com
127.0.0.1 www.domain-b.com

pour chaque site du réseau .... etc.

J'ai fait cela, de sorte que je n'ai pas à changer d'URL de site et quoi encore.


Tout sur chaque site du réseau fonctionne comme prévu. Le seul problème est le téléchargement de pièces jointes multimédia. Pour une raison quelconque, ils ne téléchargent pas correctement. L'utilisateur est un rôle d'utilisateur administrateur à part entière, il ne peut donc pas être lié à une autorisation.

J'utilise actuellement Ubuntu 12.04 avec PHP 5.4.6 (FAST-CGI)}.

Lors du téléchargement d'une image, WordPress génère une erreur très générique.

Error 40 Year Old … to Life.jpg HTTP error.

Error 40 Year Old … to Life.jpg HTTP error.

Après avoir basculé le PHP de FAST-CGI à MOD-PHP, j'ai reçu une réponse un peu plus précise de WordPress.

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

J'ai vérifié le répertoire: ./wp-content/uploads/sites/3/2013/ et il n'y a pas de /07/ créé automatiquement. J'ai donc essayé de le créer manuellement et de le télécharger à nouveau à partir de FAST-CGI et MOD-PHP, toujours les mêmes erreurs suivent.

J'ai consulté quelque chose comme: ./wp-admin/network/site-settings.php?id=3 dans le tableau de bord de l'administrateur réseau, en recherchant des options relatives aux médias.

Uploads Use Yearmonth Folders => true
Upload Path => '' //blank
Upload Url Path => '' //blank

J'ai vérifié le réseau multi-sites actif ainsi que d'autres installations multi-sites et ils semblent avoir les mêmes paramètres.

J'ai alors commencé à penser que cela pourrait être lié à .htaccess.

Quand je vais à Network Admin -> Settings -> Network Setup

Il me dit d'utiliser:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

C’est ce que j’ai utilisé, mis à part la légère modification apportée au début (Immédiatement après le RewriteEngine On), qui permettait aux URL non www de rediriger leurs adresses vers des URL www.

Exemple:

# DOMAIN-A Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-a.com
RewriteRule ^(.*)$ http://www.domain-a.com/$1 [R=301,L]

# DOMAIN-B Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-b.com
RewriteRule ^(.*)$ http://www.domain-b.com/$1 [R=301,L]

Cependant, ces règles ne sont pas les mêmes que le WordPress Codex explique . J'ai essayé les recommandations selon le codex WordPress, toujours sans succès pour les téléchargements d'images au sein de mon réseau multi-sites WordPress.

J'ai actuellement SUBDOMAIN_INSTALL défini sur true, en utilisant les règles de réécriture appropriées conformément au Codex WordPress. J'ai également essayé de définir SUBDOMAIN_INSTALL sur false, à nouveau ... en utilisant les règles de réécriture appropriées. Ni ont corrigé le problème.

L’installation réseau en direct (version: 3.5.2) a également cessé d’autoriser les téléchargements d’image.

Je ne connais pas assez le multisite pour savoir ce qui pourrait causer ce problème. Je continuerai à enquêter là-dessus, à moins que quelqu'un d'autre ait une idée de la façon de résoudre ce problème. Veuillez partager vos connaissances!

S'il vous plaît noter que ce est 100% pas un problème de mémoire. Il ne téléchargera même pas un fichier image de 1 ko.

J'ai essayé toutes les solutions possibles mentionnées dans Comment réparer une erreur HTTP lors du téléchargement d'images? et toujours pas de chance pour que cela fonctionne.

L'utilisation de Dashboard -> Media -> Add New -> browser uploader au lieu de l'utilitaire de téléchargement de plusieurs fichiers entraîne une erreur de serveur interne.

Pour quelque raison que ce soit, je suis en mesure de télécharger régulièrement cette image particulière aléatoire encore et encore, sans TOUT problème, mais toute autre image testée échoue ... même des images de 1 Ko.

media uploader success

Je suis capable de télécharger des images et pas d'autres. Certains téléchargements d'images génèrent des erreurs de serveur internes et d'autres pas. Certains pourraient être 1kb et certains pourraient être 5mb. Absolument déroutant.

3
Michael Ecklund

Merci à (@s1lv3r } _ et @GhostToast pour leurs conseils utiles dans chat J'ai localisé le problème.

Comme indiqué dans ma première question }, posée ci-dessus, j'ai déclaré que j'avais testé à la fois FAST-CGI et MOD-PHP et que tous deux continuaient à reproduire la même erreur.

Comme indiqué dans le chat , j'ai testé à la fois les serveurs dédiés Ubuntu 12.04 et CentOS 5.9.

Le message de discussion de (@s1lv3r est finalement celui qui a lancé l'idée de tester PHP-FPM également ... et examineriez-vous cela? PHP-FPM a résolu le mystère!

J'ai testé de nombreuses fois à la fois sur Ubuntu 12.04 et CentOS 5.9 avec aucun plugin activé, plugins activés, thème stock activé et thème personnalisé activé. Il a très certainement téléchargé chaque image, quelle que soit sa taille, sans erreur.

Donc encore une fois au cas où vous ne l'auriez pas attrapé plus tôt Si vous rencontrez des symptômes similaires avec votre multi-site WordPress. Essayez d'activer PHP-FPM sur votre serveur ou en tant que indiqué dans le chat par @s1lv3r Vous pouvez essayer de modifier votre répertoire de téléchargement à 777 si vous utilisez FAST-CGI.

L'activation de PHP-FPM a résolu ce problème particulier avec le multisite WordPress, provoquant une erreur HTTP lors du téléchargement de l'image.


BoF EDIT 10/20/2016

Si vous obtenez des erreurs HTTP avec WordPress Multisite, considérez la manière dont votre installation est configurée.

Il existe deux options pour WordPress Multisite:

  1. Installation sous-répertoire
  2. Installation sous-domaine

Je gère un réseau de sites utilisant tous des TLD sur une installation de "sous-répertoire". Ils ont bien travaillé pour toujours. Tout à coup, ils ont commencé à échouer lors du téléchargement de fichiers avec "Erreur HTTP".

Le problème ne se produisait que dans WordPress et le problème était HTTP. Il y a donc quelque chose sur lequel WordPress et Apache s'appuient tous les deux. Le seul lien commun est .htaccess.

Si vous regardez sur le WordPress Codex :: .htaccess et Mod Rewrite , les règles de réécriture sont en réalité très différentes selon le type d'installation que vous avez configuré pour Multisite.

J'ai remplacé les règles de réécriture pour une installation "sous-répertoire" par les règles de réécriture appropriées pour une installation "sous-domaine". J'ai également mis à jour wp-config.php pour remplacer define('SUBDOMAIN_INSTALL', false); par cette define('SUBDOMAIN_INSTALL', true);

BOOM! Problème résolu. Plus aucune erreur HTTP sur les téléchargements de fichiers dans WordPress Multisite à l'aide de TLD pour chaque site du réseau.

EoF EDIT 10/20/2016


1
Michael Ecklund