Problème avec unlink et chmod

Problème avec unlink et chmod - PHP - Programmation

Marsh Posté le 18-09-2013 à 09:23:50    

Bonjour,
j'ai une erreur qui arrive de temps en temps avec unlink qui me dit que je n'ai pas la permission pour supprimer le fichier.
Je supprime manuellement le fichier, puis après 3 - 4 executions, l'erreur revient !
Voici mon code :
 $fichier = "C:///wamp//www//toto//dossier//fic.csv" ;
 if(file_exists($fichier)) {
  chmod($fichier, '0777') ;
  unlink($fichier) ;
 }
 $sql = 'SELECT * INTO OUTFILE "' . $fichier . '"  
  FIELDS TERMINATED BY ";"  
  LINES TERMINATED BY "\r\n"
  FROM fic' ;
Quelqu'un aurait la solution ???

Reply

Marsh Posté le 18-09-2013 à 09:23:50   

Reply

Marsh Posté le 18-09-2013 à 16:44:54    

Reply

Marsh Posté le 18-09-2013 à 21:26:21    

Truc tout con, le fichier n'est-il pas en cours d’exécution quand tu essayes de le supprimer?
 
Perso j'ai géré un dossier rempli d'images par les utilisateurs avec cette méthode sans jamais avoir de problème, et je ne touchais pas aux CHMOD qui étaient de base bien réglés. Es-tu sûr que quand ton fichier ne se supprime pas c'est à cause des CHMOD? (suffit d'aller voir dans ton dossier quand tu as l'erreur)

Reply

Marsh Posté le 19-09-2013 à 15:01:05    

je parlais des notes hier parce que : PHP vérifie si les fichiers et dossiers que vous allez utiliser ont le même UID (propriétaire) que le script qui est en cours d'exécution

Reply

Marsh Posté le 20-09-2013 à 17:31:30    

nicolas4107 a écrit :

$fichier = "C:///wamp//www//toto//dossier//fic.csv" ;


 
Étant donné le chemin de ton fichier, j'en déduis que tu es sous Windows. Par conséquent, utiliser chmod(), qui permet de changer les permissions d'un fichier sur les systèmes Unix*, ça semble un peu bête... Je ne suis pas sous Windows, je peux donc pas faire le test, mais mon avis semble confirmé par le commentaire suivant :
 

Citation :

...if you use Apache under windows or IIS ,  a chmod instruction like chmod($filename,O777) may not work because windows does not handle that kind of permission's format.


 
Trouvé tout simplement dans les commentaires sur la doc PHP de chmod().
 
Ce chmod() est donc parfaitement inutile dans ton code. Le plus probable pour l'erreur que obtiens, c'est que le fichier soit déjà ouvert par un autre programme, auquel cas il ne peut pas être supprimé.


Message édité par dwogsi le 20-09-2013 à 17:32:38

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-09-2013 à 16:21:14    

Bonjour,
le fichier n'est jamais en cours d’exécution. Je le copie juste par la suite dans un dossier sur le réseau d'où je l'ouvre par la suite.
J'ai rajouté le chmod par la suite car après avoir cherché sur le net, plusieurs personnes avait le même soucis. Mais j'avais déjà l'erreur avant !
 
J'ai trouvé d'où vient le problème : Mon pc est connecté à un domaine d'entreprise.
Le propriétaire du dossier racine est bien mon nom d'utilisateur du domaine, mais le fichier généré par le script et du nom de la bécane\administrateur
 
Dans les service windows j'ai donc modifié les services wampmysqld et wampapache pour qu'ils "ouvrent une session en tant que" mon nom d'utilisateur.
supprimer le fichier, et là plus de problème de "unlink" après plusieurs essai.
 
Par contre, dans cette config, Wamp reste rouge lorsque je suis plus connecté au réseau, et là c'est le drame !
Je ne préfère pas changer le service, il n'y a pas un autre moyen ???
 

Reply

Marsh Posté le 24-09-2013 à 16:39:41    

Tu peux essayer un Wamp en version portable comme UwAmp ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-09-2013 à 08:52:45    

J'ai trouvé la solution en exécutant les services wamp en tant que "Service réseau"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed