2008-10-12 7 views

Répondre

11

Vous modifiez le répertoire de niveau supérieur, de sorte que l'utilisateur PHP doit avoir un accès en écriture à ce répertoire.

0

Essayez d'exécuter le script suivant:

print_r(posix_getpwuid(getmyuid())); 
print_r(pathinfo($YOUR_PATH)); 

Et voir ce qui revient.

2

C'est probablement parce que apache n'est pas le propriétaire du répertoire parent. Renommer (ou déplacer) un fichier revient à créer un nouveau fichier.

2

pour clarifier, php ne peut renommer des répertoires il est propriétaire réel sur:

-rwxrwxrwx user user temp/ 
-rwxr-xr-x apache apache temp2/ 
-rw-r--r-- user user script.php 

suppose script.php tente de renommer ces deux répertoires:

// this operation fails as PHP (running as apache) does not own "temp", 
// despite having write permissions  
rename('temp', 'temp.bak'); 

// this operation is successful as PHP owns "temp2" 
rename('temp2, 'temp.bak'); 
+0

Vrai en mode sans échec mais dans tous les autres cas, la propriété n'est pas requise - un simple chmod avec les autorisations appropriées suffit. – brezanac

0

Une autre chose qui pourrait aider ces sortes de situations est d'essayer de réduire réellement les autorisations. J'ai vu des occasions où apache refuse une permission d'application pour faire quelque chose parce que ses permissions sont définies aussi haut. Je suppose que c'est pour encourager de bonnes pratiques de sécurité.

Questions connexes