Comment réparer l'erreur HTTP lors du téléchargement d'images?

28

J'utilise WordPress 3.4.1 sur Ubuntu 12.04 en utilisant Apache et PHP 5.3.X

Lorsque je me connecte au tableau de bord et ajoute un nouveau message. Essayez ensuite de télécharger une image à définir comme image sélectionnée, je reçois une boîte rouge avec un message "Erreur HTTP".

J'ai lu que des gens disaient de ne pas utiliser l'uploader flash et d'utiliser simplement l'uploader du navigateur, mais quand j'essaye, j'obtiens juste une erreur de serveur interne 500.

J'ai essayé d'ajouter AddType x-mapp-php5 .phpen haut de mon fichier .htaccess, sans chance de changement.

La désactivation de TOUS les plugins n'a eu aucun effet. J'ai essayé une nouvelle installation. Pas de chance.

Mise à jour 17/10/2016 - Si vous utilisez des rôles ou des capacités personnalisés, essayez d'utiliser un rôle / des capacités natives et réessayez.

Points à considérer:

  • Propriété du fichier
  • Autorisations de fichiers
  • Configuration du .htaccess
  • PHP version 7+
  • Version actuelle de WordPress

Si vous travaillez derrière un proxy, assurez-vous que les délais d'expiration de votre serveur proxy sont correctement configurés.

Erreur HTTP de téléchargement de médias dans WordPress 3.4.1

Michael Ecklund
la source
Quel est le raisonnement derrière AddType x-mapp-php5 .php? Cela semble être très spécifique au serveur. Je pense qu'il est plus probable de casser votre site (c'est-à-dire PHP) horriblement (ou de ne rien faire si vous avez de la chance) plutôt que d'améliorer quoi que ce soit?
MrWhite

Réponses:

25

J'ai mis le code suivant dans mon functions.phpfichier. Ça marche!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

Lorsque cela aide, c'est parce qu'il modifie le module de code PHP utilisé pour traiter l'image téléchargée pour une utilisation avec WordPress.

Ce traitement comprend le déplacement de l'image dans la base de données de la bibliothèque multimédia et la génération des images de différentes tailles ("vignette", "moyenne", "grande") que WordPress veut toujours disponibles pour les thèmes pour accéder.

Il provoque l'utilisation du module "GD", car il est le premier. Dans certaines configurations de serveur, la nouvelle bibliothèque "Imagick" ne fonctionne pas bien avec d'autres pour certains scénarios d'image, tels que les grandes dimensions en pixels, donc forcer l'utilisation de la bibliothèque "GD" est un correctif.

Allen
la source
Il vaut mieux créer un petit plugin que de le mettre dans le functions.php, car si vous changez le thème, vous perdez le code. Et je suis sûr que vous voulez que cela fonctionne après un changement de thème El
EliasNS
1
+1 Cela a fonctionné pour moi lorsque j'ai rencontré ce problème avec une configuration WP 4.9.4 prête à l'emploi sur un nouveau compte HostGator. @EliasNS noob ici; quelle est la bonne façon de faire un petit plugin pour cela?
Andrew Janke
@AndrewJanke, vous pouvez utiliser un plugin 😅 es.wordpress.org/plugins/pluginception
EliasNS
"Imagick" ? Pas "ImageMagick" ?
Peter Mortensen
21

Après le dépannage de @Wyck dans le chat, nous nous sommes limités au problème sous-jacent.

Le problème était lié à la configuration de mon serveur n'ayant pas la bonne quantité de mémoire allouée à Apache / PHP.

Si quelqu'un a ce même problème, essayez de vérifier que vous disposez de suffisamment de mémoire serveur (64 Mo +) allouée à Apache / PHP dans les paramètres de configuration de votre serveur. Vous pouvez également l'ajouter à votre fichier wp-config.php:

define('WP_MEMORY_LIMIT', '64MB');

Si la solution ci-dessus ne fonctionne pas, lisez l'article Problèmes avec Image / Media Uploader? pour un dépannage supplémentaire.

Essayez d'ajouter un par un ou tous les ajustements .htaccess suivants au fichier .htaccess dans le répertoire racine de votre installation WordPress.

Sérieusement, essayez l'une des solutions ci-dessous pour savoir laquelle a fait l'affaire. Ne vous contentez pas de les coller tous dans votre fichier .htaccess immédiatement.

Essayez cette ligne:

AddType x-mapp-php5 .php

mod_security pourrait être à l'origine de problèmes. Désactivez-le pour voir si c'est le problème. Pour ce faire, créez un fichier .htaccess dans votre répertoire wp-admin. Ajoutez-y:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

Si vous utilisez un contrôle d'accès basé sur l'authentification sur votre serveur Web (souvent appelé htpasswd, authentification de base, répertoire protégé par mot de passe ou similaire), WordPress n'est pas en mesure de le gérer pour Flash Uploader, Cron et XMLRPC. Les fichiers associés doivent être exclus pour fonctionner. Gardez à l'esprit que cela pourrait briser vos considérations de sécurité.

# Exclude the file upload and WordPress CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
</FilesMatch>

Une dernière remarque: certains ont dit que si vous utilisez une version inférieure de PHP 5.3.X, vous pouvez essayer de désactiver PHP Safe Mode.

Si vous exécutez WordPress multi-site et recevez des erreurs HTTP ou des erreurs de serveur interne, liées au téléchargement d'images, veuillez lire Télécharger des images sur un site multiple provoque une défaillance en erreur HTTP ) pour d'autres idées et solutions de dépannage possibles.

Michael Ecklund
la source
ok ... bon à savoir ... avez-vous lu que WP essaie d'allouer jusqu'à 256 Mo de RAM donc cela define('WP_MEMORY_LIMIT', '64MB');devrait être plus grand si possible.
Damien
1
Si vous utilisez WP 4.1.1, le AddType x-mapp-php5 .phpn'est plus une solution viable car il force la page à imprimer simplement le code PHP en texte brut
cameronjonesweb
1
Ou ajoutez ceci à votre fichier de configuration de sites si vous utilisez nginx:client_max_body_size 128m;
Flatron
4

Je suis tombé sur la même erreur, en essayant de télécharger des médias dans wordpress. Dans Chrome, il apparaît comme une erreur http:; dans Firefox, l'erreur semble très différente. Le Web est plein d'histoires de personnes qui ont passé des jours à chasser le bogue (moi aussi :-(). Les solutions abondent, mais personne n'explique pourquoi, du moins pas d'une manière compatible avec les symptômes.

Ma contribution digne de tuppence: j'ai remarqué que le problème était en corrélation avec un défaut de segmentation signalé dans le fichier journal d'apache2. Cela me dérange, car c'est difficile à diagnostiquer.

Le redémarrage de l'ensemble du serveur a supprimé tous les symptômes et j'ai soudainement pu télécharger à nouveau des médias dans Wordpress. Frustrant, je n'ai aucune idée de pourquoi cela se produit. Le redémarrage m'a effectivement empêché de poursuivre mes recherches, et je vais maintenant devoir attendre (semaines? Mois?) Que le problème réapparaisse. J'espère que cela aidera les autres dans leur quête de la cause de ce problème. Ma femme est heureuse, cependant, car je ne peux plus passer des nuits à chasser ce problème ...

Stef Joosten
la source
1

J'ai résolu ce problème en changeant mon propriétaire de rootla apachecomme ci - dessous.

chown -R apache:apache /var/www/html/mydomain

Et puis je changer l'autorisation du wp-content/uploads/à 775.

Après cela, j'ai essayé de télécharger une image dans les médias. J'ai réussi à télécharger l'image.

imran
la source
0

J'ai eu le même problème. J'ai essayé divers correctifs, y compris le changement du processeur d'image par défaut de PHP GD à ImageMagick à l'aide du plugin Force Image Magick

Cela a aidé avec l'erreur HTTP / l'erreur 500 mais les miniatures n'étaient plus générées. J'ai ensuite désactivé le plugin à nouveau et ce qui m'a ensuite aidé, c'est cette réponse à la question On dirait que le redimensionnement de l'image ne fonctionne pas bien . Mon PHP_MEMORY_LIMITétait réglé sur 160MBle maximum absolu autorisé par mon hébergeur.

Pour le téléchargement d'images, cela a entraîné des dimensions maximales possibles de l'image autour 6000 x 6000 pxlors de l'utilisation de PHP GD et de la génération de miniatures. Il est donc important de vérifier non seulement la taille du fichier mais aussi les dimensions de l'image. Le téléchargement d'une image avec des dimensions plus élevées a entraîné une erreur / erreur HTTP 500 même avec de petites tailles de fichier.

intagli
la source
0

J'ai connu une telle question plusieurs fois et résolu en augmentant memory_limit = 256Mdans le php.ini ou l' ajout define( 'WP_MEMORY_LIMIT', '256M' );dans le wp-config.phpfichier (* Si vous avez besoin pouvez augmenter la mémoire plus 256M) la plupart du temps.

Une autre solution possible pourrait être de donner l'autorisation au \wp-content\uploads\dossier; commande: chmod -R 0755 wp-content\uploads\.

J'espère que cela vous aidera aussi.

rony2k6
la source