Runtime
Warning: require(...): Failed to open stream: No such file or directory / Fatal error: Uncaught Error – PHP E_COMPILE_ERROR
L'errore Failed opening required compare quando require o require_once non riesce a trovare o leggere il file indicato. A differenza di include, require interrompe l'esecuzione se il file manca. Le cause più comuni sono un percorso relativo calcolato dalla directory sbagliata, un file non distribuito o permessi insufficienti. Il controllo iniziale consiste nel stampare il percorso assoluto e verificare is_readable.
Cosa significa questo errore?
L'errore Failed opening required compare quando require o require_once non riesce a trovare o leggere il file indicato. A differenza di include, require interrompe l'esecuzione se il file manca. Le cause più comuni sono un percorso relativo calcolato dalla directory sbagliata, un file non distribuito o permessi insufficienti. Il controllo iniziale consiste nel stampare il percorso assoluto e verificare is_readable.
Messaggio originale
Warning: require(...): Failed to open stream: No such file or directory / Fatal error: Uncaught ErrorContesto e parole chiave
Alias
- Failed opening required
- Failed to open stream
- require file not found
Messaggi alternativi
- File richiesto non trovato
- Impossibile includere il file PHP
Prodotti
- PHP Engine
Piattaforme
- Linux
- macOS
- Windows
Parole chiave
- failed opening required php
- failed to open stream
- php require file not found
Cause possibili
Percorso relativo risolto dalla directory inattesa
Il processo CLI o il web server usa una directory corrente diversa da quella prevista dal progetto.
molto comuneFile assente o escluso dal deploy
Il file esiste nell'ambiente di sviluppo ma non è stato copiato nell'ambiente che esegue PHP.
comuneDiagnosi
Percorso assoluto costruito dallo script
Sostituire temporaneamente il percorso relativo con __DIR__ e verificare l'esistenza del file.
Come leggere il risultato. realpath deve restituire il file atteso e is_readable deve risultare true.
var_dump(__DIR__, realpath(__DIR__ . '/../config.php'), is_readable(__DIR__ . '/../config.php'));Permessi e percorso nell'ambiente di esecuzione
Controllare il file dentro il webroot o nel container realmente usato dal processo PHP.
Come leggere il risultato. Un file mancante o non leggibile spiega l'errore prima ancora del codice incluso.
ls -l /percorso/progetto/config.phpRisoluzione
Costruzione del percorso con __DIR__
Rendere il percorso indipendente dalla directory corrente del processo.
- Individuare la posizione dello script chiamante.
- Costruire il percorso con __DIR__ o una costante di progetto.
- Verificare il risultato con realpath.
- Ripetere l'avvio sia da CLI sia dal web server.
Correzione del pacchetto distribuito e dei permessi
Copiare il file richiesto nell'ambiente corretto e renderlo leggibile dall'utente del processo PHP.
- Confrontare il manifest di sviluppo con quello di produzione.
- Aggiungere il file mancante al pacchetto.
- Correggere proprietario e permessi senza rendere scrivibile tutto il progetto.
- Ritestare il percorso.
Domande frequenti
Perché il require funziona da terminale ma non dal browser?
CLI e web server possono usare directory correnti, utenti e configurazioni diversi; un percorso relativo può quindi puntare a luoghi differenti o non leggibili.
Approfondimenti
- include - PHP Manual manuale_ufficiale
- require - PHP Manual manuale_ufficiale