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:
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.
muito obrigado deu certinho salvou a lavoura e o meu site kkkkk tava rancando os restos de cabelos
Que bom! Muito bom ter esse feedback. Compensa o trabalho de ter escrito o artigo! Fico muito feliz que foi útil.
Show, parabéns pela dica.
Obrigado. Bom saber que está sendo útil!
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
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
Que estranho! O seu WordPress está na versão 5.4.2?
Thanks! I had the same problem with Hostgator and I saw your comment on wordpress.org
Muito obrigado!
I’m very glad to help! Thank you for you feedback. 😉
No meu site depois de remover o htaccess tive um problema de ERRO 404 em todas as postagens e resolvi o problema modificando os “links permanentes” e depois recolocando como era antes exatamente como no link abaixo.
https://suporte.hostgator.com.br/hc/pt-br/articles/115000392214-Como-resolver-o-erro-404-#etapa4
Obrigado pela dica. Estou com esse problema em um dos meus sites. Vou experimentar essa solução.
Show! Obrigado meu amgo
Obrigado pelo feedback!
ótimo.. me ajudou também, valeu Luciano
Fico feliz em saber que fui útil! Abraços!
Olá Luciano, encontrei sua responta em site gringo, aqui funcionou certinho, muito obrigado
Obrigado, Augusto. Essa interação de vocês faz o trabalho valer à pena.
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
Retornou erro 500 depois do upgrade?
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
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.
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..
Que chato. O erro que está dando é esse mesmo que eu reporto aqui no artigo?
confere se o htaccess ainda esta chamando o php antigo comigo aconteceu isso e apenas deletei o que chamava php antigo
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?
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.
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.
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”.
Consegui resolver meu problema com sua resposta ao comentário acima, valeu mesmo. Obrigado.
Estava também com a mesma dúvida, não tinha entendido como renomear e renomear com qual nome. Sua pergunta foi extremamente útil.
Funcionou muito bem, Luciano. O site voltou a funcionar normalmente. Muito obrigado.
Obrigado por informar! 😉
Salvou minha lomba, achei que tinha derrubado o site da cliente!
Uahahaha… Boa!
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
andEND WordPress
aredynamically 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.
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?
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
andEND WordPress
aredynamically 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
andEND WordPress
aredynamically 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
Mistério… Aqui fiz o upgrade para a 7.3 sem problemas.
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.
Sim, o “.htaccess” que é levado em consideração é aquele que está no diretório “public_html” de cada domínio.
Muito obrigado, amigo! Resolvido o problema!!!
Fico feliz por ter ajudado mais um! 😉
Salvou o dia rsrs tava igual louco procurando a solução pra o problema… Obrigado!!
Que bom! 😉
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.
Sucesso!
Não costumo deixar comentário não. Geralmente vejo a dica e saio mas essa mereceu. OBRIGADO POR COMPARTILHAR!!!!!!
Assim eu até choro! 🙂 😉 Obrigado, parceiro! Sucesso!
Salvou o meu dia!! ia ficar horas até resolver este incidente. =) Gracias!!!
Beleza! Muito bom saber que mais um dia foi salvo! 😉
Excelente artigo, objetivo e resolveu o problema! Muito grato, parabéns!
Obrigado!
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!!!!!
Que bom saber que mais um vai poder dormir em paz! 😉
Great insight…well done and the answer was to good to be true! You did it thanks!
Thank you for your words!
Muito obrigado, Luciano, pela grande ajuda!
Obrigado! Muito bom saber que pude ajudar mais uma pessoa.
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?
Exato, apenas o arquivo “.htaccess”. Verifique se o conteúdo do htaccess na pasta “public_html” bate com o conteúdo exposto aqui no artigo.
Valeu, Luciano!
Faz algum tempo que venho protelando atualizar o PHP por causa desse problema. Obrigado por partilhar a solução. 🙂
Tamujunto! 😉
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!!!!!!!!!!
Engraçado que, pelo que sei, eles já estão orientados a resolver esse problema. De qualquer forma fico feliz em saber que conseguiu resolver.
Muito obrigado irmão, me salvou aqui também.
Que bom! Tamujunto! 😉
Muito obrigado, Resolvi copiando o seu .htaccess
Ah, maneiro! Também resolve.
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.
Boa! Importante observação. Valeu!!!!!
Nossa esse post + esse comentário salvaram minha vida. Sugiro até uma atualização do post com as infos comentadas pelo colega.
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.
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!
No. In this case check the content of the “.htaccess” file in public_html to verify it’s the same as the content I have published in this article.
That got me back into my WordPress site. Thank you for the help!
Glad to know about it! You’re welcome!
Obrigado pela ajuda! Resolveu meu problema
Obrigado por compartilhar!
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!!!!
Que bom saber que mais uma vez o dia foi salvo! 😉
Obrigado Luciano. Resolveu o problema.
Que bom! Obrigado por participar aqui.
Vim através do seu comentário no WordPress.org, obrigado por ajudar a mim e a comunidade 🙂
Espírito colaborativo! “Bola pra frente”… Obrigado pelo trabalho de vir aqui compartilhar a ajuda que recebeu lá na outra plataforma.
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.
Que bom que resolveu! Obrigado por compartilhar sua solução com a comunidade.
MUITO OBRIGADO, perdi um bom tempo tentando resolver isso. #gratidão
Sucesso, Edson! Obrigado por compartilhar sua experiência. #gratidão
Tudo certo por aqui Luciano. Obrigado pela dica.
Que bom! Disponha, parceiro. Sucesso aí no seu projeto.
Muchas gracias por su colaboración!
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.
Muchas gracias por su colaboración!
Hola Luciano, gracias por escribir este artículo, me salvaste !!! Abrazos !!
Deu certo! obrigado Luciano.
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
Mil gracias por compartir, me has salvado. Pensé que ya había perdido mi sitio web. De nuevo, muchas gracias.
Obrigado por compartilhar!! Excluindo o arquivo tudo voltou a funcionar 100%.
Obrigado, foi de grande ajuda. Funcionou muito bem, consegui atualizar para PHP 7.4
Obrigado Luciano! Valeu mesmo! Fiz essa atualização para versão 7.4 e deu super certo!
Não sei como agradecer. Muito Obrigado!
Came here to thank you you save me
Yeeeeah it works! Thanks bro
Super útil, consegui consertar 🙂 Muito obrigada!
Mil gracias, que nervios editar esos códigos, pero lo logré. mil y mil gracias
Gracias por la ultima parte tenia 3 dias sin saber como solucionarlo y me ayudo bastante tu blog, bendiciones sigue asi
Solución clara, exacta y fácil de implementar! You are a genius!! Muito obrigada!,
Muito obrigado Luciano! Segui o tutorial e deu certinho… Agora está rodando perfeitamente com a versão PHP 7.4 e WordPress 5.5.3. Abraço!
Obrigado Luciano! Você é fera!
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 🙂
Muito obrigado meu amigo, salvou meu dia!!! Parabéns pela divulgação do seu conhecimento.
Que dor no peito, vc salvou minha pele kkk!
Era isso mesmo. Obrigado!
Funcionó perfecto, muchas gracias!
Obrigado, salvou meu dia!!
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
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!!!
Que bom saber! Obrigado pelo feedback!