Se non commetti errori, le origini PHP non possono essere lette dall'esterno: finché apache è configurato per gestire file .php tramite mod_php, verranno sempre eseguiti, mai pubblicati come non elaborati. 
 Tuttavia, gli errori sono facili da fare e si trovano spesso nel codice di produzione. Gli errori tipici includono: 
-  Vulnerabilità di attraversamento del percorso. Lo schema tipico è che tu costruisci un nome di file basato su qualche input dell'utente (ad esempio un parametro   
$_GET   ), quindi servi questo file attraverso, diciamo,   readfile   . Ad esempio, se hai   readfile("/home/me/pages/{$_GET['pageid']}.html")   , un utente malintenzionato può facilmente piantare qualcosa come   "../../../../../../../../../../../etc/shadow"   .  
-  File PHP con estensioni non standard. Apache utilizza l'estensione per determinare il tipo MIME di un file e decide in seguito come gestirlo.    
config.php    sarà interpretato, ma   config.php.inc    no; dal momento che   .inc    non è un'estensione nota nella maggior parte delle configurazioni, Apache usa il testo in chiaro, il che significa che il codice sorgente può essere richiesto sulla rete.  
-  Caricamento del codice. In genere, tale vulnerabilità si verifica quando si dispone di caricamenti di file gestiti in modo improprio, ad es. autorizzare le directory arbitrarie nel nome file caricato o il caricamento in un percorso sotto la radice del documento. Quando un utente malintenzionato riesce a piantare   
.php    file in una posizione in cui vengono eseguiti, è possibile eseguire codice PHP arbitrario sul server, incluso il codice che legge altri script ed estrae le password.  
-  Vulnerabilità nell'esecuzione di codice in modalità remota. Simile al caricamento del codice; se hai   
eval   ,   include   ,   system   ,   exec    o chiamate simili nel tuo codice, e i loro argomenti sono parzialmente forniti dall'utente, potresti essere nei guai: gli input non correttamente sterilizzati a uno di questi costrutti possono consentire agli aggressori di eseguire codice PHP o comandi shell arbitrari.  
-  Visualizzazione degli errori nell'output della pagina. Molti errori ed eccezioni contengono dati sensibili, almeno parti del codice sorgente, ma a volte (ad es. PDOExceptions) anche nomi utente e password. 
 
-  Errori di configurazione di Apache. Apache è una cosa potente, piena di funzioni oscure e alcune di esse hanno implicazioni sulla sicurezza. 
 
 Oltre a evitare queste trappole, dovresti mettere solo i file sotto la root del documento che devono essere chiamati direttamente; qualsiasi include, file di dati, file di configurazione, librerie, ecc., andare nelle directory  al di fuori  della root del documento.