Impossible d'écrire un fichier texte dans un répertoire sur FTP.

Impossible d'écrire un fichier texte dans un répertoire sur FTP. - PHP - Programmation

Marsh Posté le 09-07-2007 à 14:26:42    

Bonjour à tous,
 
actuellement en stage dans une petite entreprise, je dois mettre en place un système de logs d'un site en PHP.
En local pas de problème. Mon script php s'éxecute et les logs sont bien enregistrés.
En ligne en revanche le répertoire est bien créé quand cela est nécessaire avec les bons droits (777) vérifié sur le ftp. Mais la création du fichier texte avec les logs ne se fait pas.
Le masque par défaut est à "18" quand j'utilise la fonction umask(). Je l'ai donc changé et rétabli en début et fin de script. Que signifie un mask à 18?
 
Voici mon bout de code :  
 
 
 $oldmask=umask();
 umask(0);
 
        // Si le répertoire n'existe pas je le créé.
 if(!(is_dir('_logs/'.date("Y-m" ).'/')))
 {
 
  mkdir('_logs/'.date("Y-m" ).'/');
   
 }
        // Je créé mon fichier de log.
 $filename='_logs/'.date("Y-m" ).'/'.date("d-m-Y" ).'.txt';
 $fo=fopen($filename,"a+" );
 $phrase='[ '.date("H:i:s" ).' ] '.$_SERVER['REQUEST_URI'].' --> L\'utilisateur '.$_SESSION['login'].' est sur la page d\'accueil.';
        //Et j'y ajoute ma phrase...
  fputs($fo,$phrase);
 fputs($fo,"\n" );
        // Je ferme le fichier et je rétabli le masque par défaut.
 fclose($fo);
 $umask=($oldmask);
 
VOICI LE RESULTAT EN LOCAL :
 
 
 
[ 12:02:30 ] /home.php?interv=futur --> L'utilisateur jerome est sur la page d'accueil.
[ 12:03:19 ] /home.php?interv=futur --> L'utilisateur jerome est sur la page d'accueil.
[ 12:03:27 ] /home.php?interv=futur --> L'utilisateur jerome est sur la page d'accueil.
[ 12:04:17 ] /home.php?interv=nonsoldees --> L'utilisateur jerome est sur la page d'accueil.
[ 12:13:06 ] /home.php --> L'utilisateur jerome est sur la page d'accueil.
[ 12:13:08 ] /home.php?interv=soldees --> L'utilisateur jerome est sur la page d'accueil.
[ 12:13:11 ] /home.php?taches=afaire --> L'utilisateur jerome est sur la page d'accueil.
[ 12:13:14 ] /home.php?interv=futur --> L'utilisateur jerome est sur la page d'accueil.
[ 14:08:55 ] /home.php?interv=futur --> L'utilisateur jerome est sur la page d'accueil.

 
Impossible d'avoir ce résultat en ligne. Faut t'il changer quelque chose au niveau des config php.ini ou httpd.conf ?

Reply

Marsh Posté le 09-07-2007 à 14:26:42   

Reply

Marsh Posté le 09-07-2007 à 19:42:37    

si /home.php marche en local, sur le net tu as une chance sur 2 pour que ca ne marche pas.. (surtout si tu es en dédié)..
 
Donc tu utilise la fonction realpath pour savoir si les chemins que tu utilisent en local sont valables online : http://www.manuelphp.com/php/function.realpath.php

Reply

Marsh Posté le 10-07-2007 à 09:26:01    

Problème résolu. Il n'y a pas de problème avec /home.php, j'utilise $_SERVER['REQUEST_URI']. ce qui me donne en local /home.php et une autre information en ligne (que je ne dévoilerais pas...)
 
L'erreur était celle-ci :  
Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 6666 is not allowed to access /var/www/vhosts/unknown.fr/subdomains/dingue/httpsdocs/_logs/2007-07 owned by uid 48 in /var/www/vhosts/unknown.fr/subdomains/dingue/httpsdocs/home.php on line 21
 
L'erreur venait d'une différence au sein de la configuration du core php entre master value et local value du "safe_mode". La master value était bien celle de php.ini (off) et la local value était sur on. Etant chez ovh j'ai été vérifié que le safe mode était désactivé via l'interface ce qui n'était pas le cas... Merci quand même du coup de main !

Reply

Sujets relatifs:

Leave a Replay

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