Creation de fichier en php

Creation de fichier en php - PHP - Programmation

Marsh Posté le 21-03-2005 à 19:55:43    

Voila je cherche a creer un fichier sur le serveur mais pas moyen de le creer pouvez vous me corriger
 

Code :
  1. <?php
  2. function infoFichier($fichier){
  3.  if(!file_exists($fichier)){
  4.   print "$fichier n'existe pas<br>";
  5.   return;
  6.  }
  7.  print "$fichier ".( is_file($fichier)? "est":"n'est pas" )." un fichier<br>";
  8.  print "$fichier ".( is_dir($fichier)? "est":"n'est pas" )." un dossier<br>";
  9.  print "$fichier ".( is_readable($fichier)? "peut":"ne peut pas" )." etre lu<br>";
  10.  print "$fichier ".( is_writable($fichier)? "peut":"ne peut pas" )." etre modifie<br>";
  11.  print "$fichier ".( is_executable($fichier)? "est":"n'est pas" )." executable<br>";
  12.  print "$fichier fait".( filesize($fichier))." octets<br>";
  13.  print "Le dernier acces a $fichier remonte a ".date("D d M Y g:i A",fileatime($fichier))."<br>";
  14.  print "$fichier a ete modifie ".date("D d M Y g:i A",filemtime($fichier))."<br>";
  15.  print "$fichier a ete cree/modifie ".date("D d M Y g:i A",filectime($fichier))."<br>";
  16. }
  17. function creationFichier(){
  18.  print("creation<br>" );
  19.  touch("compteur.txt" ); // Creation du fichier
  20.  $file_compteur = fopen("./compteur.txt","w" ); // Ouverture du fichier
  21.  flock($file_compteur,LOCK_EX); // Verrouiallge exclusif sur le fichier
  22.  fwrite($file_compteur,"1" ); // Initialisation du compteur
  23.  flock($file_compteur,LOCK_UN); // Liberation du verrouillage
  24.  fclose($file_compteur); // Fermeture du fichier
  25. }
  26. function incrementeCompteur(){
  27.  $file_compteur = fopen("./compteur.txt","r" ); // Ouverture du fichier
  28.  flock($file_compteur,LOCK_EX); // Verrouiallge exclusif sur le fichier
  29.  $num = (integer)fgets($file_compteur,1024);
  30.  print "$num.<br>";
  31.  fclose($file_compteur); // Fermeture du fichier
  32.  // On modifie le compteur
  33.  $file_compteur = fopen("./compteur.txt","w" ); // Ouverture du fichier
  34.  fwrite($file_compteur,$num+1); // Initialisation du compteur
  35.  flock($file_compteur,LOCK_UN); // Liberation du verrouillage
  36.  fclose($file_compteur); // Fermeture du fichier
  37. }
  38. if(!file_exists("./compteur.txt" )){
  39.  creationFichier();
  40. }else{
  41.  incrementeCompteur();
  42. }
  43. infoFichier("./compteur.txt" );
  44. ?>


 
Merci d'avance

Reply

Marsh Posté le 21-03-2005 à 19:55:43   

Reply

Marsh Posté le 21-03-2005 à 19:57:00    

PS: le serveur est sous linux et voici le resultat affiche
 
creation
./compteur.txt n'existe pas

Reply

Marsh Posté le 21-03-2005 à 20:02:22    

Tu as les droit en écriture ?
chmod 707 ?

Reply

Marsh Posté le 21-03-2005 à 20:06:39    

Kyle_Katarn a écrit :

Tu as les droit en écriture ?
chmod 707 ?


En fait je sais pas car il veut meme pas creer le fichier c bien ca le probleme

Reply

Marsh Posté le 21-03-2005 à 20:16:42    

Code :
  1. if(touch("compteur.txt" )){ // Creation du fichier
  2.     print "COUCOU<br>";
  3. }


 
Si je met ce code il m'affiche jamais "coucou"  :??:

Reply

Marsh Posté le 21-03-2005 à 20:30:46    

T'a pas les droit en ecriture :p, donne les droit en ecriture au demon httpd sinon t mal :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 20:32:53    

esox_ch a écrit :

T'a pas les droit en ecriture :p, donne les droit en ecriture au demon httpd sinon t mal :p


g fait ca mais ca marche toujours pas:
 

Code :
  1. function creationFichier(){
  2.  print("creation<br>" );
  3.  if(touch("compteur.txt" )){ // Creation du fichier
  4.   print "COUCOU<br>";
  5.  }
  6.  $file_compteur = fopen("./compteur.txt","w" ); // Ouverture du fichier
  7.  chmod ("./compteur.txt", 0755);
  8.  flock($file_compteur,LOCK_EX); // Verrouiallge exclusif sur le fichier
  9.  fwrite($file_compteur,"1" ); // Initialisation du compteur
  10.  flock($file_compteur,LOCK_UN); // Liberation du verrouillage
  11.  fclose($file_compteur); // Fermeture du fichier
  12. }

Reply

Marsh Posté le 21-03-2005 à 20:34:07    

ah non g du mal comprendre c'est du cote du serveur alors que je dois donner les droits d'ecriture c'est ca??

Reply

Marsh Posté le 21-03-2005 à 20:46:19    

tu dois donner les droits d'ecriture dans le ./ , donc en gros tu fais un chmod('../madir', 0755);
 
Ou alors tu fais ca proprement => tu changes le propriétaire/le groupe du dossier pour que httpd soit dedans et tu enleve les droit d'ecriture a tout le monde, et tu les donne a group/owner


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 20:55:35    

Code :
  1. chmod("../Site",0777);
  2. if(!file_exists("./compteur.txt" )){
  3.  creationFichier();
  4. }else{
  5.  incrementeCompteur();
  6. }
  7. infoFichier("./compteur.txt" );


 
meme en faisant ceci je n'y arrive plus  :pt1cable:  :pt1cable:

Reply

Marsh Posté le 21-03-2005 à 20:55:35   

Reply

Marsh Posté le 21-03-2005 à 20:58:04    

regardes le manuel php sur la fonction touch qui n'a pas du tout le meme résultat que la commande touch sous linux/unix :)
je pense que ton probleme vient de la

Reply

Marsh Posté le 21-03-2005 à 21:04:20    

benamoubeach a écrit :

regardes le manuel php sur la fonction touch qui n'a pas du tout le meme résultat que la commande touch sous linux/unix :)
je pense que ton probleme vient de la


 de toute facon touch sous linux cree bien en fichier et de plus je crois que fopen permet aussi la creation d'un fichier si ce dernier n'existe pas    
moi je pense aussi que c une histoire de droit car lorsque j'utilise ma fonction infoFichier sur le dossier il me dit qu'il ne peut pas etre modifie hors je fait bien un

Code :
  1. chmod("../Site", 0777);

La j'avoue que je m'y perd :pt1cable:

Reply

Marsh Posté le 21-03-2005 à 21:08:31    

Affiche les droit de tout les fichier


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 21:13:29    

je viens de faire ceci:
 

Code :
  1. if(chmod("../Site/",0777)){
  2.         print "chmod OK<br>";
  3. }else{
  4. print "chmod KO<br>";
  5. }
  6. if(!file_exists("./compteur.txt" )){
  7. creationFichier();
  8. }else{
  9. incrementeCompteur();
  10. }
  11. infoFichier("./compteur.txt" );
  12. infoFichier("../Site" );


 
et il m'affiche ceci:
 
chmod KO
creation
beu
./compteur.txt n'existe pas
../Site n'est pas un fichier
../Site est un dossier
../Site peut etre lu
../Site ne peut pas etre modifie
../Site est executable
../Site fait 4096 octets
Le dernier acces a ../Site remonte a Mon 21 Mar 2005 8:00 PM
../Site a ete modifie Mon 21 Mar 2005 7:47 PM
../Site a ete cree/modifie Mon 21 Mar 2005 7:47 PM

Reply

Marsh Posté le 21-03-2005 à 21:15:51    

touch justement sous php ne crée pas un fichier et c'est la ou tu te fourvoies :).
Je suis d'accord que si tu fais ton fopen avec le flag w comme tu le fais, ca le crée tout seul, donc tu peux enlever ton touch(). Ensuite, est-ce que ton fichier est créé ?? Affiche les droits du dossier .

Reply

Marsh Posté le 21-03-2005 à 21:16:28    

voila, le probleme vient du chmod de Site :)

Reply

Marsh Posté le 21-03-2005 à 21:18:55    

ouep :D Faut remonter plus haut dans l'arborescence ou alors te donner les droit directement sous unix


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 21:19:46    

benamoubeach a écrit :

voila, le probleme vient du chmod de Site :)


Ok alors pourquoi lorsque je fait un chmod 777 sur le dossier les droits ne sont pas modifie: chmod KO

Reply

Marsh Posté le 21-03-2005 à 21:22:23    

Parceque si tu n'es pas le proprio du fichier tu peux pas changer les droits :p


Message édité par esox_ch le 21-03-2005 à 21:22:43

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 21:28:45    

esox_ch a écrit :

ouep :D Faut remonter plus haut dans l'arborescence ou alors te donner les droit directement sous unix


Oui mais je n'est pas acces au serveur(unix)
En fait je vais expliquer: ( j'aurais du le faire surment avant  :ange: )
Je dois developper une extension d'un site. en fait il y a dans le site de depart une partie administration ou je met le lien de mon extension.
Mon extension quand a elle se trouve sur un serveur ftp que possede le proprietaire du site mais je peux sur ce serveur ajouter supprimer et modifier des fichiers ou dossiers donc en theorie rien ne m'interdit de creer un fichier par l'intermediare d'un script php. Est ce que je me trompe??

Reply

Marsh Posté le 21-03-2005 à 21:30:17    

Ok, donc par FTP tu changes les autorisations de Site/ en 0777, et apres tu arriveras a faire ce que tu veux


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 21:36:21    

Code :
  1. $groupinfo = posix_getgrgid(filegroup ( "../Site" ));
  2. print_r($groupinfo);


donne:
 

Array (
[name] => users
[passwd] => x
[members] => Array ( )
[gid] => 100
 )

Reply

Marsh Posté le 21-03-2005 à 21:38:13    

esox_ch a écrit :

Ok, donc par FTP tu changes les autorisations de Site/ en 0777, et apres tu arriveras a faire ce que tu veux


non mais justement meme avec un  


chmod("../Site",0777);


 
ca ne marche pas

Reply

Marsh Posté le 21-03-2005 à 21:39:39    

le chmod retourne false il merde koi donc en gros je n'est pas les droits de modifier Site/ ?

Reply

Marsh Posté le 21-03-2005 à 21:40:25    

ca c pas par ftp c par php

Reply

Marsh Posté le 21-03-2005 à 21:42:41    

je dois faire quoi alors ?

Reply

Marsh Posté le 21-03-2005 à 21:44:38    

Tu prend ton client FTP, tu l'ouvres, tu te connectes au site, et tu changes les autorisations du dossier!!!!


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 21:45:52    

ah ok je viens de comprendre ce que vous etes en train de me dire excuser moi pour le temps de reaction

Reply

Marsh Posté le 21-03-2005 à 21:52:21    

OK Merci a esox_ch et benamoubea ch pour votre aide j'avais pas pense a ca je me suis pris la tete avec le php alors que ca venai du serveur ftp  
 
Donc merci a tous les deux.

Reply

Marsh Posté le 21-03-2005 à 21:56:50    

Il y a pas de quoi ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 22:03:10    

g servi a rien mé pa de koi ^^

Reply

Marsh Posté le 21-03-2005 à 22:07:03    

benamoubeach a écrit :

g servi a rien mé pa de koi ^^


il faut pas dire ca c en eliminant toutes les solutions une a une que l'on    
arrive a quelque chose ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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