2010-02-07 3 views
6

Ho tirato fuori i miei capelli per le ultime 2 ore su questo e sono sicuro che sto facendo qualcosa di veramente stupido.mkdir che non funziona in PHP

<?php 
mkdir("blah", 0777); 
?> 

Questo funziona tramite la riga di comando e la cartella viene creata. Ma la stessa cosa non funziona quando provo a eseguirlo attraverso il browser. Eventuali problemi di autorizzazione dei file?

+0

Sono rimasto bloccato per molto tempo, hth qualcun altro. se sei su SELinux c'è un ulteriore livello di permessi chiamato "Security Context" che puoi vedere con 'ls -alZ'. usa qualcosa come 'chcon system_u: object_r: httpd_sys_content_t: s0 public_HTML' – changokun

risposta

11

Potrebbe essere possibile che durante l'esecuzione sotto la riga di comando, lo script eredita le autorizzazioni, ma quando si esegue dal browser non lo fa?

In tal caso, si desidera rendere le autorizzazioni di directory "scrivere" per il gruppo.

+4

Haha! 10.000 reputazione! Huzzah! –

3

Il server web (Apache?) È in esecuzione in quanto è proprio utente, e non ha il permesso di scrivere nella directory si sta eseguendo mkdir in.

Dare il permesso dell'utente del server Web di scrivere al directory da A) rendendolo proprietario, B) aggiungendolo al gruppo se il gruppo ha il permesso di scrittura, o C) dare a tutti il ​​permesso di scrittura (non consigliato per la maggior parte delle configurazioni).

+0

Stava avendo lo stesso problema, risolto! All'inizio ho creato una cartella con FTP, quando usare mkdir per creare cartelle al suo interno non funzionava. Eliminando la cartella e assicurandosi che lo script lo crei, risolverlo. – Pedro

0

si può provare con lo umask, Quando PHP viene utilizzato come modulo server, la umask viene ripristinata al termine di ogni richiesta.

$old = umask(0); 
mkdir($path,0777); 
umask($old);