Come risolvere l'errore HTTP durante il caricamento delle immagini?


28

Sto usando WordPress 3.4.1 su Ubuntu 12.04 usando Apache e PHP 5.3.X

Quando accedo alla dashboard e aggiungo un nuovo post. Quindi prova a caricare un'immagine da impostare come immagine in primo piano, visualizzo una casella rossa con il messaggio "Errore HTTP".

Ho letto di persone che dicono di non usare l'uploader flash e di usare solo l'uploader del browser, ma quando provo questo, ricevo solo un errore del server interno 500.

Ho provato ad aggiungere AddType x-mapp-php5 .phpin cima al mio file .htaccess, senza fortuna nel cambiamento.

La disabilitazione di TUTTI i plugin non ha avuto effetto. Ho provato una nuova installazione. Senza fortuna.

Aggiornamento 17/10/2016 - Se si utilizzano ruoli o funzionalità personalizzati, provare a utilizzare un ruolo / funzionalità nativi e riprovare.

Cose da considerare controllo:

  • Proprietà del file
  • Autorizzazioni per i file
  • .htaccess configuration
  • Versione PHP 7+
  • Versione corrente di WordPress

Se operi dietro un proxy, assicurati di avere i timeout del tuo server proxy configurati correttamente.

WordPress 3.4.1 Errore HTTP caricamento file multimediale


Qual è il ragionamento alla base AddType x-mapp-php5 .php? Sembrerebbe essere molto specifico per il server. Penso che sia più probabile che rompa il tuo sito (es. PHP) in modo orribile (o non faccia nulla se sei fortunato) piuttosto che migliorare qualcosa?
MrWhite,

Risposte:


25

Ho inserito il seguente codice nel mio functions.phpfile. Funziona!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

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

Questo aiuta perché cambia il modulo di codice PHP utilizzato per elaborare l'immagine caricata da utilizzare con WordPress.

Questa elaborazione include lo spostamento dell'immagine nel database della libreria multimediale e la generazione di immagini di dimensioni diverse ("anteprima", "media", "grande") a cui WordPress desidera sempre che i temi possano accedere.

Fa sì che il modulo "GD" venga utilizzato, perché è il primo. In alcune configurazioni del server, la più recente libreria "Imagick" non funziona bene con altri per alcuni scenari di immagine, come ad esempio grandi dimensioni di pixel, quindi forzare l'uso della libreria "GD" è una soluzione.


È meglio creare un piccolo plug-in piuttosto che inserirlo in functions.php, perché se si modifica il tema, si perde il codice. E sono sicuro che vuoi che funzioni dopo un cambio di tema 😊
EliasNS,

1
+1 Questo ha funzionato per me quando ho riscontrato questo problema con una configurazione WP 4.9.4 pronta all'uso su un nuovo account HostGator. @EliasNS noob qui; qual è il modo giusto per creare un piccolo plugin per questo?
Andrew Janke,

@AndrewJanke, potresti usare un plugin 😅 es.wordpress.org/plugins/pluginception
EliasNS

"Imagick" ? Non "ImageMagick" ?
Peter Mortensen,

21

Dopo aver risolto i problemi con @Wyck in chat, ci siamo ridotti al problema di fondo.

Il problema era legato alla configurazione del mio server che non disponeva della giusta quantità di memoria allocata ad Apache / PHP.

Se qualcuno ha lo stesso problema, prova a verificare che la memoria del server sia sufficiente (64 MB +) allocata ad Apache / PHP nelle impostazioni di configurazione del tuo server. Puoi anche aggiungere questo al tuo file wp-config.php:

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

Se la soluzione di cui sopra non funziona, leggi l'articolo Problemi con l'upload di immagini / supporti? per ulteriore risoluzione dei problemi.

Prova ad aggiungere uno per uno o tutte le seguenti modifiche .htaccess al file .htaccess nella directory principale dell'installazione di WordPress.

Seriamente, prova una di ognuna delle soluzioni di seguito in modo da sapere quale ha fatto il trucco. Non incollarli immediatamente nel tuo file .htaccess immediatamente.

Prova questa linea:

AddType x-mapp-php5 .php

mod_security potrebbe causare problemi. Disabilita per vedere se questo è il problema. Per fare ciò, crea un file .htaccess nella tua directory wp-admin. Aggiungi questo ad esso:

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

Se stai utilizzando il controllo degli accessi basato sull'autenticazione sul tuo server web (spesso noto come htpasswd, autenticazione di base, directory protetta da password o simili), WordPress non è in grado di gestirlo per Flash Uploader, Cron e XMLRPC. I file correlati devono essere esclusi per funzionare. Tieni presente che ciò potrebbe interrompere le tue considerazioni sulla sicurezza.

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

Un'ultima nota: alcuni hanno detto che se si utilizza una versione inferiore di PHP 5.3.X si può provare a disabilitare PHP Safe Mode.

Se stai eseguendo WordPress su più siti e stai ricevendo errori HTTP o errori interni del server, relativi al caricamento delle immagini, leggi Caricamento di immagini su errori multi-sito per errori HTTP ) per altre possibili idee e soluzioni per la risoluzione dei problemi.


ok ... buono a sapersi ... hai letto che WP tenta di allocare fino a 256 MB di RAM, quindi questo define('WP_MEMORY_LIMIT', '64MB');dovrebbe essere più grande, se possibile.
Damien,

1
Se stai usando WP 4.1.1, questa AddType x-mapp-php5 .phpnon è più una soluzione praticabile in quanto forza la pagina a stampare semplicemente il codice PHP come testo normale
cameronjonesweb

1
Oppure aggiungi questo al tuo file di configurazione dei siti se stai utilizzando nginx:client_max_body_size 128m;
Flatron,

4

Ho riscontrato lo stesso errore durante il tentativo di caricare file multimediali in wordpress. In Chrome, viene visualizzato come http: errore; in Firefox, l'errore sembra abbastanza diverso. Il web è pieno di storie di persone che hanno trascorso giorni a inseguire il bug (così anch'io :-(). Le soluzioni abbondano, ma nessuno spiega perché, almeno non in modo coerente con i sintomi.

Il mio contributo degno di tuppence: ho notato che il problema è correlato a un errore di segmentazione segnalato nel file di registro di apache2. Questo mi disturba, perché è difficile da diagnosticare.

Il riavvio dell'intero server ha eliminato tutti i sintomi e all'improvviso ho potuto caricare nuovamente i file multimediali in Wordpress. Frustrantemente, non ho idea del perché questo accada. Il riavvio mi ha effettivamente impedito di effettuare ulteriori ricerche e ora dovrò aspettare (settimane? Mesi?) Per riapparire il problema. Spero che questo possa aiutare gli altri nella loro ricerca della causa di questo problema. Mia moglie è felice, però, perché non posso più passare le notti a inseguire questo problema ...


1

Ho risolto questo problema cambiando il mio proprietario da roota apachecome di seguito.

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

E poi ho cambiato l'autorizzazione del wp-content/uploads/to 775.

Successivamente, ho provato a caricare un'immagine nel supporto. Sono riuscito a caricare l'immagine.


0

Ho avuto lo stesso problema. Ho provato varie correzioni, tra cui la modifica del processore di immagini predefinito da PHP GD a ImageMagick utilizzando il plug-in Force Image Magick

Questo ha aiutato con l'errore HTTP / l'errore 500 ma le miniature non venivano più generate. Ho quindi nuovamente disattivato il plug-in e ciò che mi ha aiutato è stata questa risposta alla domanda Sembra che il ridimensionamento delle immagini non funzioni bene . Il mio PHP_MEMORY_LIMITera impostato su 160MBquale sia il massimo assoluto consentito dal mio hoster.

Per il caricamento di immagini ciò ha comportato le dimensioni massime possibili dell'immagine di around 6000 x 6000 pxquando si utilizza PHP GD e si generano miniature. Quindi è importante controllare non solo le dimensioni del file ma anche le dimensioni dell'immagine. Il caricamento di un'immagine con dimensioni maggiori ha provocato un errore / errore HTTP 500 anche con file di dimensioni ridotte.


0

Ho sperimentato tale problema molte volte e risolto aumentando memory_limit = 256Min php.ini o l'aggiunta define( 'WP_MEMORY_LIMIT', '256M' );di wp-config.phpfile di (* Se necessario è possibile aumentare la memoria più di 256M) la maggior parte del tempo.

Un'altra possibile soluzione potrebbe essere quella di autorizzare la \wp-content\uploads\cartella; comando: chmod -R 0755 wp-content\uploads\.

Spero che possa aiutarti anche tu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.