Prima di gridare DUPLICATO! e bandiscimi nell'abisso, ascoltami. :)Centos 7/Apache/PHP - mkdir(): Autorizzazione negata
Ho sviluppato un sito intranet per la società con cui lavoro e in origine lo stavo sviluppando direttamente dalla mia workstation con Windows 7/IIS. Poiché mi sono avvicinato al completamento del sito/applicazioni, mi è stata data una casella Centos 7 in esecuzione Apache, quindi ho iniziato il processo di migrazione su tale sistema. Ho risolto la maggior parte dei problemi minori e ho avviato il sito ora. Tuttavia, esiste una parte del sito che interagisce con il nostro database e crea una directory/file di registro in base alla persona che ha effettuato l'accesso. Questa parte utilizza la funzione mkdir(), ma sto riscontrando problemi di autorizzazione.
mkdir(): Permission denied
Ecco quello che ho già fatto:
- Dal momento che sto usando CentOS 7, l'utente/gruppo Apache è apache: apache. Ho usato chown e cambiato il proprietario di/var/www/html/e la cartella Logs per l'utente/gruppo di apache. Per sicurezza, ho ricontrollato httpd.conf e controllato i processi in esecuzione per assicurarmi di avere l'utente/gruppo corretto.
- Ho tentato, solo a scopo di test, di modificare i permessi di tutte quelle cartelle su chmod 777, ma ottenendo lo stesso errore.
- Stackfile cercatoOverflow dall'alto verso il basso e solo ottenere risposte per le cose che ho già provato, ma senza risultato.
Quindi, se io uso chmod o chown per modificare le autorizzazioni per le cartelle a cui si accede, sto ricevendo lo stesso tipo di errore. Per sicurezza, ho controllato anche l'utente PHP, e sta usando anche l'utente apache.
Se qualcuno può avere ulteriori informazioni sul motivo per cui non funziona, anche con le autorizzazioni cambiate, quindi per favore mi illumini. Se mi è capitato di perdere l'unico articolo che spiegava questa particolare situazione, allora urla duplicati e bandiscimi nell'abisso. lol :)
EDIT Okay, dopo ulteriori test, ho scoperto 2 problemi che sembrano causare questo problema globale.
- PHP sta cercando di impostare le autorizzazioni per la cartella quando viene creato dallo script, e sembra che il server non piace che anche se apache è il proprietario. Dopo aver rimosso quella parte del codice, l'errore delle autorizzazioni scompare e viene visualizzato un errore con "nessun file o directory di questo tipo".
- Durante il test di creazione di directory con l'utente Apache tramite sudo, è stato in grado di creare una directory senza problemi. Tuttavia, il mio script PHP sta creando 2 directory e quindi un file di registro nell'ultimo creato. Sembra che non sia possibile creare due directory contemporaneamente ?? Ad esempio, esiste già una cartella Logs creata e PHP sta cercando di creare due directory sotto di essa, una per l'ID dell'utente e quindi un'altra cartella all'interno di quella con la data.Quindi, una volta eseguito lo script PHP, dovrebbe creare qualcosa come "Logs/5235/3-3-2015 /"
Giusto per notare, ho provato a impostare il valore ricorsivo su true su mkdir in PHP, ma è in quel momento che ho notato i problemi dell'autorizzazione. Quando la modalità ricorsiva/viene rimossa, non ottiene il problema del permesso, ma non è in grado di creare directory annidate.
EDIT2
Per testare le mie teorie, ho rimosso la nidificazione e cercato di fare mkdir creare solo 1 directory, e sta generando gli stessi errori di prima. Sebbene sia di proprietà di Apache, e anche se l'ho impostato su 777, restituisce i problemi di autorizzazione.
Hai controllato tutti i registri? ad esempio: registri SElinux. prova tail -f/var/log/* per vedere se c'è qualcos'altro là fuori. usa anche sudo per i test. ad esempio: sudo -H -u apache bash -c 'mkdir/tmp/testapache' – risyasin
@Risyasin Ho già controllato tutti i registri e ottenuto lo stesso tipo di errori di registro. Ho provato a creare la directory con Apache tramite sudo, e crea la directory senza alcun problema. Forse ho scoperto la fonte del problema, aggiornerò il mio post originale con le nuove informazioni. – Fata1Err0r
@Risyasin Ho aggiornato il mio post originale con le nuove informazioni. Fondamentalmente quando mkdir sta cercando di impostare le autorizzazioni ricorsive e predefinite, viene negato. Quando rimuovo la modalità ricorsiva /, non ottiene il problema del permesso, ma non crea le directory nidificate perché non pensa che la posizione esista poiché ricorsiva è falsa di default. Come già detto, ho dato la proprietà delle cartelle ad Apache e ho persino provato a impostarle su 777 per il test. – Fata1Err0r