Facebook Pixel
WordPress Trava Após Upgrade do PHP

WordPress Trava Após Upgrade do PHP

Recentemente fiz o upgrade da versão do PHP em um domínio hospedado na Hostgator. Imediatamente o site feito em WordPress parou de funcionar apresentando a seguinte mensagem de erro:

Warning: Use of undefined constant WP_CONTENT_DIR – assumed ‘WP_CONTENT_DIR’ (this will throw an Error in a future version of PHP) in /home2/maranata/public_html/wp-includes/load.php on line 141

Parece que em sua instalação do PHP está faltando a extensão MySQL, que é requisitada pelo WordPress.

Nesse caso, “maranata” é o nome da conta dentro da hospedagem em questão. A mensagem vai variar conforme o nome da conta que você está utilizando.

Eu tomei a iniciativa de escrever este artigo depois que percebi que havia um grande número de pessoas reportando o mesmo problema no fórum oficial do WordPress, onde também publiquei a solução que explico aqui.


Solução do Problema

A solução para esse problema é bem simples:

Em alguns casos haverá um arquivo “.htaccess” no diretório base, aquele que fica logo na raiz da hospedagem. Para resolver o problema basta remover este arquivo.

Caso você esteja utilizando o gerenciador de arquivos na web a partir do painel de controle cPanel é necessário ir nas configurações e habilitar a exibição de arquivos ocultos, aqueles que começar com “.” da seguinte forma:

1. Clique em “Settings” (configurações) no canto superior direito
2. Marque a caixa “Show Hidden Files” (exibir arquivos ocultos) e então salve.
3. Os arquivos ocultos irão aparecer.

No caso do problema específico, basta apagar ou renomear o arquivo “.htaccess” do diretório base.

Importante observar que embaixo do diretório “public_html” existe outro arquivo “.htaccess” e o problema acontece porque, quando se faz o upgrade a partir do cPanel o sistema atualiza apenas o arquivo “.htaccess” que está embaixo do diretório “public_html”, que gera um conflito com o arquivo que está na pasta base.

Conteúdo do arquivo “.htaccess” da pasta base:

# Use PHP71 as default
AddHandler application/x-httpd-php71 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php71/lib
</IfModule>


Conteúdo do arquivo na pasta “public_html”:

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php73” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php73 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

Observe que o arquivo da pasta base faz clara referência ao PHP 7.1 enquanto o arquivo localizado em “public_html” é bem diferente.

Pode ser que, em alguns casos, mesmo eliminando o “.htaccess” da pasta base o problema continue. Caso isso aconteça verifique o conteúdo do arquivo “.htaccess” na pasta “public_html” e procure pelos handlers que é a seguinte parte do código:

AddHandler application/x-httpd-ea-php73 .php .php7 .phtml

Se houver alguma linha que adicione o handler das versões antigas do PHP, ela deve ser eliminada. Conforme exemplo abaixo:

AddHandler application/x-httpd-php71 .php

Seguindo esses passos com cuidado o problema deve estar totalmente sanado.

A Origem do Problema

Tudo começa ao atualizar a versão do WordPress. Assim que você atualiza o WordPress ele alerta para a necessidade de fazer atualização também do PHP no servidor. Caso seu WordPress não esteja apresentando esta mensagem é porque não se faz necessário realizar o procedimento de atualização da linguagem de programação (PHP).

Caso a mensagem acima esteja aparecendo, é altamente recomendável atualizar o servidor para evitar que possa vir a ocorrer problemas na execução do seu site WordPress. No caso da hospedagem Hostgator e muitas outras baseadas em cPanel, basta entrar no painel de controle (cPanel) e, na seção “Software”, selecionar “MultiPHP Manager” ou “PHP Selector”.

Em “PHP Selector” é bem simples, basta selecionar a nova versão do PHP, já em “MultiPHP Manager” é necessário selecionar os domínios e subdomínios que deseja fazer o upgrade, marcando as caixas de seleção do lado esquerdo e então selecionar a nova versão na caixa de combinação do lado direito. Recomendo sempre selecionar a última versão.

Feito isso, a versão do PHP no servidor estará atualizada porém é possível que ocorra o problema citado no título deste artigo, porém, como já foi demonstrado aqui, é bem fácil de se resolver.

Se esta dica foi útil para você, deixe seu comentário logo abaixo, e caso tenha gostado deste artigo considere assinar este blog para receber em seu e-mail as novidades que publico por aqui.

UPDATE: Caso você ainda encontre problemas, dê uma lida aqui na seção de comentários. Algumas pessoas fizeram contribuições importantes para o assunto.

118 thoughts on “WordPress Trava Após Upgrade do PHP

      1. Foi muito útil. direto ao ponto, procurei em diversos locais. a dica de verificar os 2 .htaccess, tanto da pasta base, quanto a publica. Resolveu meu problema

  1. Muito Obrigado pela dica, foi realmente muito útil, pois coloquei o site de volta no ar. Porém o aviso de atualização no wordpress permanece, mesmo eu tendo atualizado o php para 7.3

  2. Thanks! I had the same problem with Hostgator and I saw your comment on wordpress.org
    Muito obrigado!

  3. Luciano comigo retornou um erro 500 eu apenas copiei o mesmo dessa forma, eu tb tenho esse cliente hospedado na hostgator:

    Use PHP73 as default

    application/x-httpd-ea-php73 .php

    suPHP_ConfigPath /opt/php73/lib
    
    1. nao, desculpe, deixa eu explicar melhor, na atualização do php, i htaccess do root ficou correto mas, na pasta do wp, tb atualizou mas, manteve o chamado do php 71 na linha acima, entao eu apenas deletei a linha que chamava o 7.1 e funcionou perfeitamente, muitíssimo obrigado pela sua dica, foi perfeita, o esse detalhe mesmo que foi simples de resolver, é so uma questao de prestar atenção e deletar o excedente

      1. Muito bom! Por isso achei importante listar o conteúdo final do arquivo htaccess! Graças à sua participação agora sabemos que eventualmente pode ser necessário alterar manualmente o conteúdo do arquivo. Obrigado por enriquecer nossa experiência.

  4. fiz em um site e deu certo, quando fiz a atualização em todos os sites, não deu mais certo…apaguei o arquivo lá em cada um dos sites…e nada..continua no erro..

    1. confere se o htaccess ainda esta chamando o php antigo comigo aconteceu isso e apenas deletei o que chamava php antigo

  5. Luciano,

    Quando eu fiz isso, ao acessar o meu site, é iniciado uma nova instalação do wordpress… estranho né?

    Alguém aqui já passou por isso?

    1. Bem estranho mesmo. Não sei o que dizer. Caso alguém aqui tenha passado por isso, por favor, relate sua experiência.

      Você já tentou o suporte do seu host? No meu caso, o pessoal da Hostgator é bem competente na solução desses problemas técnicos.

  6. Luciano, no caso tem que copiar as linhas de código do conteúdo do arquivo na pasta “public_html” e colar por cima das linhas de código di conteúdo do arquivo “.htaccess” da pasta base?

    Estou com exatamente este erro e não conseguir entender bem a resolução, o meu wordpress deu essa origem do problema e fui atualizar o php para 7.3 pelo Cpanel e deu exatamente esse erro que começastes a falar no texto, mas eu não entendi como resolve.

    1. Apenas apague o arquivo “.htaccess” que está na pasta base. Se não quiser apagar renomeie para qualquer outro nome, dessa forma o sistema não irá encontrá-lo e irá processar apenas o “.htaccess” que está na pasta “public_html”.

      1. Consegui resolver meu problema com sua resposta ao comentário acima, valeu mesmo. Obrigado.

    2. Estava também com a mesma dúvida, não tinha entendido como renomear e renomear com qual nome. Sua pergunta foi extremamente útil.

  7. Boa noite, amigo, esta solução abaixo na qual vc apresentou,, atualiza só para versão 7.1.24.

    Use PHP71 as default

    AddHandler application/x-httpd-php71 .php

    suPHP_ConfigPath /opt/php71/lib

    Agora se eu fizer assim:

    Use PHP72 as default

    AddHandler application/x-httpd-php72 .php

    suPHP_ConfigPath /opt/php72/lib

    Dai não da certo. Pois ao atualizar não funciona, porém não erro, e sim fica dando download de um arquivo.

    Use PHP73 as default

    AddHandler application/x-httpd-php73 .php

    suPHP_ConfigPath /opt/php73/lib

    Assim também não funciona.

    Minha hospedagem é da hostgator.

    Outra solução é deixar assim,

    BEGIN WordPress

    The directives (lines) between BEGIN WordPress and END WordPress are

    dynamically generated, and should only be modified via WordPress filters.

    Any changes to the directives between these markers will be overwritten.

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    END WordPress

    Porém, de tal forma não atualizar nem para 7.1.24, e sim permanece em 7.0.

    Se tem a solução para este problema por favor me ajude. Não estou conseguindo um solução definitiva.

    1. Amigo, observe o conteúdo do arquivo htaccess após o processo de upgrade que está descito aqui no artigo, na parte de handlers. Consta apenas “php7” e “php73”. Já experimentou copiar exatamente o conteúdo que publiquei aqui dentro seu htaccess?

      1. copiei exatamente este código seu e deu certo, para atualização7.1: AddHandler application/x-httpd-php71 .php

        suPHP_ConfigPath /opt/php71/lib

        Porém, fiz alteração colocando 7.3 e não deu certo:

        ASSIM FUNCIONA PARA 7.1

        AddHandler application/x-httpd-php73 .php

        suPHP_ConfigPath /opt/php73/lib

        Entendeu. Quando der faça o teste pra vc ver não dá certo.

        BEGIN WordPress

        The directives (lines) between BEGIN WordPress and END WordPress are

        dynamically generated, and should only be modified via WordPress filters.

        Any changes to the directives between these markers will be overwritten.

        RewriteEngine On
        RewriteBase /
        RewriteRule ^index.php$ – [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

        END WordPress

        php — BEGIN cPanel-generated handler, do not edit

        Set the “ea-php71” package as the default “PHP” programming language.

        AddHandler application/x-httpd-php71 .php

        suPHP_ConfigPath /opt/php71/lib

        php — END cPanel-generated handler, do not edit

        ASSIM NÃO FUNCIONA PARA 7.3

        BEGIN WordPress

        The directives (lines) between BEGIN WordPress and END WordPress are

        dynamically generated, and should only be modified via WordPress filters.

        Any changes to the directives between these markers will be overwritten.

        RewriteEngine On
        RewriteBase /
        RewriteRule ^index.php$ – [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

        END WordPress

        php — BEGIN cPanel-generated handler, do not edit

        Set the “ea-php73” package as the default “PHP” programming language.

        AddHandler application/x-httpd-php73 .php

        suPHP_ConfigPath /opt/php73/lib

        php — END cPanel-generated handler, do not edit

  8. Luciano, estou passando pelo mesmo erro e já me ajudou muito! Dúvida, posso excluir o arquivo “.htaccess” do diretório base de apenas um dos meus domínios? Tem alguns outros sites na mesma hospedagem com versões diferentes do PHP e não quero que sejam afetados.

  9. Que top. Valeu pela dica. Tava desde ontem buscando essa info e não achava nada. Agora funfou hehehe. Só preciso agora resolver o evento cron “epc_purge_request”, que não acho resposta nem que a vaca tussa.

  10. Não costumo deixar comentário não. Geralmente vejo a dica e saio mas essa mereceu. OBRIGADO POR COMPARTILHAR!!!!!!

  11. Muchas gracias!!!!! passei o dia inteiro tentando resolver isso, agora são quase meia noite e vou conseguir dormir em paz graças a voce!!! muito obrigado!!!!!

  12. Não sei porque, mas não funcionou pra mim. Deletei o .htaccess da pasta base e o erro continua como se nada tivesse acontecido. É para deletar/renomear somente o arquivo .htaccess e não os outros que possuem isso seguidos de uma numeração correto?

  13. Nossa muuuuuito obrigado mesmo!!!! Eu estava louco atrás dessa solução, nem o suporte da Hosgator conseguiu me ajudar e apenas com uma ação eu resolvi o problema. Obrigado!!!!!!!!!!

  14. Valeu cara, ajudou muito. Mas no meu caso não funcionou tão fácil assim. Mesmo depois de deletar o arquivo o erro persistiu. então resolvi abrir o arquivo q ficou para dar uma conferida no codigo, eis q vejo q o novo codigo do php 7.4 foi escrito pela atualização, porem sem apagar o codigo do 7.1. Então eu apenas selecionei o codigo q colocava o 7.1 como padrão e apaguei, deixando apenas o do 7.4. Tive q fazer isso no arquivo “.htaccess” de cada diretorio de cada site que tinha. E voltou tudo a funcionar. Fica a dica, caso alguém mais tenho o mesmo problema.

    1. Nossa esse post + esse comentário salvaram minha vida. Sugiro até uma atualização do post com as infos comentadas pelo colega.

      1. Willer, seguindo sua sugestão fiz atualização no texto do artigo, entretando observe que desde o início tomei o cuidado de mostrar os conteúdos tanto da versão problemática quanto da versão correta do “.htaccess” exatamente para dirimir esse tipo de problema.

  15. Hi Luciano!

    After allowing the hidden files to show, in the root directory there’s no .htaccess file, whereas in the public_html directory there is. Should I copy that one onto the root?

    Many thanks in advance!

  16. Muito obrigado Luciano Reis, salvou o dia!! Estava a horas tentando solucionar este problema e com esse texto consegui resolver em segundos, só renomeando o arquivo .htacess. Valeu!!!!

  17. Muito Obrigado pela ajuda.

    No meu caso eu consegui removendo o Código (PHP54 ou o codigo do seu php antigo)

    Use PHP54 as default

    AddHandler application/x-httpd-php74 .php

    suPHP_ConfigPath /opt/php74/lib

    Este codigo estava dentro do htacess dentro da pasta “public_html” o que estava gerando o conflito.

  18. Mil Gracias, por compartir esta solución, Felicidades por el Gran Contenido. Mil Gracias. —- Muito obrigado por compartilhar esta solução, Parabéns pelo Ótimo Conteúdo. Obrigado.

  19. Obrigado!

    Deletei o “.htaccess” na pasta base e os handlers.

    Esse código logo abaixo também foi removido e vinha primeiro no arquivo de configuração. Fazendo referência para a versão errada do php.

    Use PHP71 as default

    AddHandler application/x-httpd-php71 .php

    suPHP_ConfigPath /opt/php71/lib

    Esse abaixo ficou no fim do arquivo e o problema foi resolvido.

    php — BEGIN cPanel-generated handler, do not edit

    Defina o pacote “ea-php74” como a linguagem padrão de programação “PHP”.

    AddHandler application/x-httpd-ea-php74 .php .php7 .phtml

    php — END cPanel-generated handler, do not edit

  20. Obrigado Luciano! Valeu mesmo! Fiz essa atualização para versão 7.4 e deu super certo!

  21. Gracias por la ultima parte tenia 3 dias sin saber como solucionarlo y me ayudo bastante tu blog, bendiciones sigue asi

  22. Oi Luciano, primeiramente, muito obrigado pelo Tutorial. Funcionou muito bem!

    Para quem não conseguiu, vou explicar como eu fiz, seguindo seu Tutorial:

    O erro de Atualização do PHP foi solucionado em duas etapas, que foram elas:

    1 – DELETAR o arquivo .htaccess que está na pasta raiz

    2 – EDITAR o arquivo .htaccess que está na pasta _public.html ou dentro da pasta do site, e Apagar algumas Linhas de Códigos que citam a Versão Antiga do PHP. No meu caso, eu apaguei essa parte e funcionou:

    END WordPress

    Use PHP71 as default

    AddHandler application/x-httpd-php71 .php

    suPHP_ConfigPath /opt/php71/lib

    Note que essas linhas citam a versão antiga do PHP, a “7.1” e precisam ser deletadas.

    Importante:

    Se você não quiser Deletar essas linhas por medo ou receio que possa dar algum problema(foi o que eu fiz), é só colocar uma # no começo da linha que ela se transforma em um Comentário e não faz mais efeito, fica assim:

    END WordPress

    Use PHP71 as default

    #AddHandler application/x-httpd-php71 .php
    #
    #suPHP_ConfigPath /opt/php71/lib
    #

    Depois de fazer essas alterações, salve o arquivo e verifique se funcionou.

    Se não der certo, é só deletar as # que essas Linhas de Código voltam a funcionar, se ainda não der certo, lá na parte de Alterar a Versão do PHP, escolha a Opção “inherit” que tudo vai voltar ao normal, pelo menos é o que eu espero rsrs

    Obrigado novamente 🙂

  23. deletei esta linha, e funcionou perfeitamente ufa que alivio, salve amigo

    END WordPress

    Use PHP71 as default

    AddHandler application/x-httpd-php71 .php

    suPHP_ConfigPath /opt/php71/lib

  24. Sua dica foi a solução para o meu caso também, porém tive que excluir um código no inicio do .htaccess deixei igual o seu exemplo e testei, tudo voltou a funcionar. Muito obrigado por compartilhar a informação!!!

Deixe seu comentário