Como corrigir erro HTTP ao carregar imagens?

28

Estou usando o WordPress 3.4.1 no Ubuntu 12.04 usando Apache e PHP 5.3.X

Quando entro no painel e adiciono uma nova postagem. Em seguida, tente fazer o upload de uma imagem para definir como imagem em destaque. Recebo uma caixa vermelha com a mensagem "Erro HTTP".

Eu li sobre pessoas dizendo para não usar o Flash Uploader e apenas usar o navegador, mas quando tento isso, recebo um 500 Internal Internal Error.

Eu tentei adicionar AddType x-mapp-php5 .phpna parte superior do meu arquivo .htaccess, sem sorte nas alterações.

Desativar TODOS os plugins não teve efeito. Eu tentei uma nova instalação. Sem sorte

Atualização 17/10/2016 - Se você estiver usando funções ou recursos personalizados, tente usar uma função / recursos nativos e tente novamente.

Pontos a considerar na verificação:

  • Propriedade do arquivo
  • Permissões de arquivo
  • configuração .htaccess
  • Versão PHP 7+
  • Versão Atual do WordPress

Se você estiver operando atrás de um proxy, verifique se o tempo limite do servidor proxy está configurado corretamente.

Erro HTTP de upload de mídia do WordPress 3.4.1

Michael Ecklund
fonte
Qual é o raciocínio por trás AddType x-mapp-php5 .php? Isso parece ser muito específico do servidor. Eu acho que é mais provável quebre seu site (ou seja, PHP) horrivelmente (ou não faça nada se tiver sorte), em vez de melhorar alguma coisa?
MrWhite

Respostas:

25

Coloquei o seguinte código no meu functions.phparquivo. Funciona!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

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

Quando isso ajuda, é porque altera o módulo de código PHP usado para processar a imagem carregada para uso com o WordPress.

Esse processamento inclui mover a imagem para o banco de dados da biblioteca de mídia e gerar imagens de tamanhos diferentes ("miniatura", "médio", "grande") que o WordPress sempre deseja que os temas acessem.

Faz com que o módulo "GD" seja usado, porque é o primeiro. Em algumas configurações de servidor, a biblioteca "Imagick" mais recente não está funcionando bem com outras pessoas em determinados cenários de imagem, como grandes dimensões de pixel, portanto, forçar a biblioteca "GD" a ser usada é uma correção.

Allen
fonte
É melhor criar um pequeno plugin do que colocá-lo no functions.php, porque se você alterar o tema, você perde o código. E eu tenho certeza que você quer este trabalho depois de uma mudança tema 😊
EliasNS
1
+1 Isso funcionou para mim ao encontrar esse problema com uma configuração WP 4.9.4 pronta para uso em uma nova conta HostGator. @EliasNS noob aqui; Qual é o caminho certo para criar um pequeno plugin para isso?
Andrew Janke
@AndrewJanke, você poderia usar um plug-in 😅 es.wordpress.org/plugins/pluginception
EliasNS
"Imagick" ? Não é "ImageMagick" ?
Peter Mortensen
21

Após solucionar o problema com @Wyck no bate-papo, reduzimos o problema subjacente.

O problema estava relacionado à configuração do meu servidor que não possui a quantidade adequada de memória alocada para o Apache / PHP.

Se alguém tiver esse mesmo problema, tente verificar se você possui memória do servidor suficiente (64 MB +) alocada para o Apache / PHP nas configurações do servidor. Você também pode adicionar isso ao seu arquivo wp-config.php:

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

Se a solução acima não funcionar, leia o artigo Problemas no Image / Media Uploader? para solução de problemas adicionais.

Tente adicionar um por um ou todos os seguintes ajustes .htaccess ao arquivo .htaccess no diretório raiz da sua instalação do WordPress.

Sério, tente uma das soluções abaixo para saber qual fez o truque. Não basta colar todos eles no seu arquivo .htaccess imediatamente.

Tente esta linha:

AddType x-mapp-php5 .php

mod_security pode estar causando problemas. Desative para ver se esse é o problema. Para fazer isso, crie um arquivo .htaccess no diretório wp-admin. Adicione isto a ele:

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

Se você estiver usando o controle de acesso com base na autenticação no servidor da Web (geralmente conhecido como htpasswd, autenticação básica, diretório protegido por senha ou similar), o WordPress não poderá lidar com isso no Flash Uploader, Cron e XMLRPC. Os arquivos relacionados precisam ser excluídos para funcionar. Lembre-se de que isso pode quebrar suas considerações de segurança.

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

Uma observação final: alguns disseram que, se estiver usando uma versão menor do PHP 5.3.X, você pode tentar desativar o Modo de Segurança do PHP.

Se você estiver executando vários sites do WordPress e estiver recebendo erros HTTP ou erros internos do servidor, relacionados ao upload de imagens, leia Upload de imagens para vários sites causa falha no erro HTTP ) para obter outras idéias e soluções possíveis para solução de problemas.

Michael Ecklund
fonte
ok ... bom saber ... você leu que o WP tenta alocar até 256 MB de RAM, então isso define('WP_MEMORY_LIMIT', '64MB');deve ser maior, se possível.
Damien
1
Se você estiver usando WP 4.1.1, o AddType x-mapp-php5 .phpjá não é uma solução viável, uma vez que força a página para simplesmente imprimir o código PHP como texto simples
cameronjonesweb
1
Ou adicione-o ao arquivo de configuração do site se você estiver usando o nginx:client_max_body_size 128m;
Flatron
4

Corri para o mesmo erro, ao tentar fazer upload de mídia no wordpress. No Chrome, ele aparece como um erro http:; no Firefox, o erro parece bem diferente. A web contém histórias completas de pessoas que passaram dias perseguindo o bug (o mesmo aconteceu com eu :-(). As soluções são abundantes, mas ninguém explica o porquê, pelo menos não de maneira consistente com os sintomas.

Minha contribuição digna de tuppence: notei que o problema se correlaciona com uma falha de segmentação sinalizada no arquivo de log do apache2. Isso me perturba, porque é difícil diagnosticar.

A reinicialização de todo o servidor eliminou todos os sintomas e, de repente, eu pude fazer upload de mídia novamente no Wordpress. Frustrantemente, não tenho idéia de por que isso ocorre. A reinicialização me impediu efetivamente de qualquer pesquisa adicional e agora terei que esperar (semanas? Meses?) Para que o problema reapareça. Espero que isso ajude outras pessoas na busca pela causa desse problema. Minha esposa está feliz, porque eu não posso mais passar noites perseguindo esse problema ...

Stef Joosten
fonte
1

Resolvi esse problema alterando meu proprietário de rootpara apacheabaixo.

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

E então eu mudei a permissão do wp-content/uploads/para 775.

Depois disso, tentei fazer upload de uma imagem na mídia. Consegui fazer o upload da imagem.

imran
fonte
0

Eu tive o mesmo problema. Tentei várias correções, incluindo a alteração do processador de imagem padrão do PHP GD para o ImageMagick usando o plug-in Force Image Magick

Isso ajudou no erro HTTP / no erro 500, mas as miniaturas não estavam mais sendo geradas. Desativei o plug-in novamente e o que me ajudou foi a resposta sobre a pergunta Parece que o redimensionamento de imagem não está funcionando bem . Meu PHP_MEMORY_LIMITfoi definido como 160MBo máximo absoluto que meu hoster permite.

Para o upload de imagens, isso resultou em dimensões máximas possíveis da imagem ao redor 6000 x 6000 pxao usar o PHP GD e gerar miniaturas. Portanto, é importante não apenas verificar o tamanho do arquivo, mas também as dimensões da imagem. Carregar uma imagem com dimensões mais altas resultou em um erro HTTP / erro 500, mesmo com tamanhos de arquivo pequenos.

intagli
fonte
0

Eu experimentei tal questão muitas vezes e resolvido aumentando memory_limit = 256Mem php.ini ou adicionar define( 'WP_MEMORY_LIMIT', '256M' );no wp-config.phparquivo (* Se necessário, você pode aumentar a memória mais do que 256M) a maior parte do tempo.

Outra solução possível poderia ser dar permissão para a \wp-content\uploads\pasta; comando: chmod -R 0755 wp-content\uploads\.

Espero que possa ajudá-lo também.

rony2k6
fonte