Warning: require(...): Failed to open stream: No such file or directory / Fatal error: Uncaught Error – PHP E_COMPILE_ERROR

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 Error

Contesto 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 comune

File assente o escluso dal deploy

Il file esiste nell'ambiente di sviluppo ma non è stato copiato nell'ambiente che esegue PHP.

comune

Diagnosi

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.

php
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.

bash
ls -l /percorso/progetto/config.php

Risoluzione

Costruzione del percorso con __DIR__

Difficoltà: facileRischio: basso

Rendere il percorso indipendente dalla directory corrente del processo.

  1. Individuare la posizione dello script chiamante.
  2. Costruire il percorso con __DIR__ o una costante di progetto.
  3. Verificare il risultato con realpath.
  4. Ripetere l'avvio sia da CLI sia dal web server.

Correzione del pacchetto distribuito e dei permessi

Difficoltà: mediaRischio: medioRichiede amministratore

Copiare il file richiesto nell'ambiente corretto e renderlo leggibile dall'utente del processo PHP.

  1. Confrontare il manifest di sviluppo con quello di produzione.
  2. Aggiungere il file mancante al pacchetto.
  3. Correggere proprietario e permessi senza rendere scrivibile tutto il progetto.
  4. 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

Schede correlate