2012-12-17 20 views
10

Ho uno script PHP in precedenza di lavoro che è in grado di creare una directory con mkdir:PHP in grado di creare una directory con mkdir

$webfolder = "/var/www/html/images/user"; 
mkdir($webfolder, 0770); 

ho fatto alcune modifiche alla impostazione di autorizzazione della cartella /var/www/html/images che ora è :

drwxrwx---. myself apache system_u:object_r:httpd_sys_content_t:s0 images 

Penso che questa cartella è stata di proprietà di apache. Ma dal momento che apache ha i privilegi completi di lettura, scrittura ed esecuzione come gruppo di utenti, mi chiedo perché non possa creare una cartella all'interno. L'utilizzo di mkdir produce un valore booleano false.

Il problema è dovuto alla proprietà della directory o ci sono altri motivi? Nota che sto usando la versione 5.4 di PHP.

Registro errori aggiunto:

[Lun 17 Dic 2012 11:12:34] [errore] [client 127.0.0.1] PHP Warning: mkdir(): Permesso negato in/var/www/html/upload sulla linea 33, referer: https://mywebsite.com/referer

+1

La cartella '/ var/www/html/images/user' esiste? Se sì, con quali autorizzazioni? E puoi - per testare i purporses - cambiare il proprietario della cartella genitore in 'apache' e provare se funziona allora? – hakre

+0

@hakre, è SELinux che mi sta dando problemi. Vedi la mia risposta.Grazie per la pazienza e il tempo :) –

risposta

26

La risposta sta guardando proprio di fronte a me, ma mi manca a causa della mia scarsa familiarità con SELinux.

Il tipo di contesto di SELinux dovrebbe essere impostato come httpd_sys_content_rw_t invece di httpd_sys_content_t modo che la cartella è sia di lettura e scrittura per apache. La modifica del contesto in modo ricorsivo avviene con il seguente comando:

# chcon -R -t httpd_sys_content_rw_t /var/www/html/images 

Bel lutto. Spero che aiuti gli altri che si imbattono in questo.

+0

Ciao sto avendo lo stesso problema qui .. con un progetto che sto cercando di creare in CodeIgnter e sviluppando in Ubuntu 14.14 Lts .. Potresti spiegarmi meglio i passi che mi servono fare per correggere questo errore ??? Per darti alcune informazioni aggiuntive: il percorso assoluto è '/ opt/lampp/htdocs/www/my-app/public/uploads. .. Fondamentalmente quello che sto cercando di fare è che ogni utente loggato carica i file all'interno dei caricamenti cartella e anche creare album-cartelle (questo sarà fatto con php) per memorizzare le foto .. – Lykos

+0

È possibile visualizzare gli argomenti che ho creato per ulteriori informazioni http://stackoverflow.com/questions/32861261/codeigniter-message-mkdir- permesso-negato-su-ubuntu, http://forum.codeigniter.com/thread-63136.html, http://askubuntu.com/questions/679844/mkdir-permission-denied-to-create-folders-with- php – Lykos

+0

questo comando hai detto che avrebbe risolto il mio problema anche nel mio caso? – Lykos

0

Su CentOS7 VM, con PHP5.4.16/Apache 2.4.6/mariadb 5.5.44, la directory del modello smarty non era scrivibile per generare file di modelli compilati e restituiva l'errore seguente (in/var/log/httpd/error_log):

[Thu Mar 31 12:36:08.201383 2016] [:error] [pid 13094] [client 192.168.212.65:52204] PHP Fatal error: Smarty error: unable to write to $compile_dir '/var/www/html/app1/templates_c'. Be sure $compile_dir is writable by the web server user. in /var/www/html/app1/libs/smarty/Smarty.class.php on line 1093 

quindi l'applicazione PHP visualizzava una schermata vuota.

chmod 777 templates_c non ha funzionato neanche; ma secondo il suggerimento di @Question Overflow, il permesso su web root su questa VM ha risolto il problema.

ho dovuto eseguire:

[[email protected] html]# chcon -R -t httpd_sys_content_rw_t /var/www/html 

naturalmente, la cache templates_c & dovrebbe essere di proprietà dell'utente apache:

drwxr-xr-x. 2 apache apache  6 Mar 31 12:56 templates_c 
drwxr-xr-x. 2 apache apache  6 Mar 31 12:56 cache 

Dopo aver trascorso più di una mezza giornata, sono imbattuto in questo. Grazie