fichier en read-only : comment effacer ?

Petit nouveau ! | 3 Messages

23 déc. 2009, 17:51

Bonjour,
j'ai démarré le PHP il y a qqs jours et j'ai toujours réussi à me débrouiller avec les docs, forums, etc.
Et là je suis sur un problème surement basique mais pas moyen de trouver la solution .
Je crée des fichiers avec fopen (mode 'w') et pas moyen de les effacer par unlink : permission denied.

Je crée tous mes fichiers avec cette function :
function WriteToFile ($fn,$ln) {
    $ouvre=fopen($fn,"a");
    fwrite($ouvre,$ln . chr(10));
    fclose($ouvre);
}
En fait, je crée un fichier TOTOtmp.txt avec ma function WriteToFile() puis je le copie en TOTO.txt.
TOTO.txt n'est pas readonly mais TOTOTmp.txt est readonly d'où le problème.
	copy($_SESSION['FNameTmp'],$_SESSION['FName']);
chmod ($_SESSION['FNameTmp'],777);
unlink ($_SESSION['FNameTmp']);
L'erreur :

Code : Tout sélectionner

unlink(./Day1_ST01Tmp.txt) [<a href='function.unlink'>function.unlink</a>]: Permission denied
Mettre le fichier en 777 ne change rien. Pourquoi le fichier se crée en 777. IL faudrait changer le umask ? Mais je suis sous Windows , c'est peut-être là le problème ?

Je suis avec Zend sous Windows XP et EasyPHP 5.3.
Merci pour l'aide.
Sergio

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 déc. 2009, 22:57

De mémoire, le fait de donner les droits 777 au fichier autorise les actions de lecture+écriture+exécution pour tous les utilisateurs (chose dont tu n'as en principe pas besoin ici)... en revanche, pour pouvoir supprimer un fichier, il me semble qu'il est nécessaire pour php d'avoir les droits d'écriture sur le dossier contenant le fichier à supprimer... à vérifier :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

28 déc. 2009, 22:57

Jamais trouvé le problème. J'ai montré à des collègues, idem. J'ai réécrit ce qui concernait les fichiers et ça fonctionne !! Va comprendre.
En tous cas merci d'avoir répondu.

ViPHP
ViPHP | 5462 Messages

29 déc. 2009, 01:47

simpa ta fonction WriteToFile, mais ca existe deja sous PHP (file_put_contents):
http://www.php.net/manual/fr/function.f ... ntents.php