Resolver problemas
Erro PHP ao usar require_once, require, include_once ou include
Quando o PHP não consegue abrir um ficheiro pedido por require_once, require, include_once ou include, a mensagem completa indica o caminho pedido, que pode ser relativo, o ficheiro que fez a chamada e a sua linha. require interrompe a execução; include normalmente gera um aviso e permite continuar.
Um exemplo de mensagem é:
Fatal error: require(): Failed opening required '/home/usuario_cpanel/public_html/fichero.php' (include_path='.:php') in /home/usuario_cpanel/public_html/index.php on line 1
Este erro indica que o PHP não conseguiu abrir o recurso pedido por require ou include. Conserve também o aviso anterior, porque pode precisar se falhou o caminho, as permissões, open_basedir ou include_path.
No exemplo, index.php chama na sua linha 1 fichero.php. O PHP indica que não o conseguiu abrir nesse caminho; isso não demonstra por si só que o ficheiro não exista.
Possíveis causas e soluções
- Verifique o caminho exato do erro, a existência do ficheiro e as maiúsculas e minúsculas de cada nome.
- Verifique o
DocumentRoote a estrutura real da implementação. Um site não tem de estar necessariamente em/home/usuario/public_htmle pode carregar código situado fora do diretório público. - Reveja as permissões do ficheiro e de travessia dos diretórios pai, além do proprietário.
- Se o ficheiro existir e for legível, verifique as restrições
open_basedir,include_path, wrappers e o diretório de trabalho usado para um caminho relativo. - Se desapareceu, compare versões, implementações, cópias e registos. Considere uma intrusão apenas quando existirem alterações, acessos ou outras evidências que a sustentem.
Caminhos estáveis e dependências
Quando o ficheiro pertence ao mesmo projeto, um caminho baseado em __DIR__ evita depender do diretório a partir do qual o processo é executado:
require __DIR__ . '/config/bootstrap.php';
É um exemplo: esse ficheiro deve existir na estrutura real da sua aplicação. Se faltar vendor/autoload.php, reveja a implementação das dependências com o Composer e o seu ficheiro de bloqueio; não crie um ficheiro vazio nem substitua require por include para o esconder. Não construa um caminho de inclusão diretamente a partir de dados de um pedido.
Também lhe pode ser útil
- Maximum execution time of X seconds exceeded in x.php Diagnostique o que esgota max_execution_time e aumente o limite de forma temporária e delimitada ape...
- Ativar o registo de erros do PHP a partir do cPanel Ative temporariamente log_errors para a versão efetiva a partir do seletor de PHP do cPanel, sem mos...
- Ativar o registo de erros do PHP a partir do ficheiro .htaccess Configure o .htaccess para registar temporariamente os erros PHP fora de public_html, sem os revelar...
- Depurar erros em aplicações ou ficheiros PHP Diagnostique um ecrã em branco ou um erro 500 reproduzindo a falha e consultando primeiro o registo...
Algo não bate certo ou mudou? Diga-nos e revemos.