Quando PHP viene utilizzato come modulo Apache, esso eredita i permessi dell'utente Apache (tipicamente quelli dell'utente "nobody"). Questo ha diversi impatti sulla sicurezza e l'autorizzazione. Per esempio, se si sta usando PHP per accedere ad un database, a meno che il database non abbia un sistema interno di controllo degli accessi, dovrai rendere il database accessibile dall'utente "nobody". Questo significa che uno script malevolo potrebbe accedere e modificare il database, anche senza username e password. É del tutto possibile che uno spider web possa atterrare sulla pagina web dell'amministratore del database, ed eliminare tutti i tuoi database. Puoi proteggerti da questo tramite le autorizzazioni di Apache, o puoi progettare il tuo modello di accessi attraverso LDAP, i file .htaccess, ecc. ed includere quel codice come parte dei tuoi script PHP.
Spesso, una volta che la sicurezza viene stabilita verso il punto dove l'utente PHP (in questo caso, l'utente apache) ha pochissimi rischi collegati ad esso, si scopre che a PHP viene ora impedito di scrivere su qualsiasi file, nelle directory degli utenti. O forse è stato impedito l'accesso o la modifica dei database. É stato equamente messo in sicurezza dalla scrittura di file buoni e cattivi, o dall'ingresso di transazioni buone e cattive al database.
Un errore frequente di sicurezza fatto a questo punto è di fornire i permessi di root ad apache, o di aumentare le abilità di apache in qualche altro modo.
Fornire i permessi di root all'utente Apache è estremamente pericoloso e può compromettere l'intero sistema, quindi metodi come sudo, chroot, o l'esecuzione come root non dovrebbero essere presi in considerazione da coloro che non sono dei professionisti della sicurezza.
Ci sono alcune soluzioni più semplici. Utilizzando open_basedir puoi controllare e limitare quali directory posso essere utilizzate per PHP. Puoi inoltre impostare delle aree solo per apache, limitando tutte le attività web ai file non di utenti, oppure non di sistema.