#1 Le 09/04/2008, à 16:02
- NewsUbuntu62
fopen ne fonctionne pas :/ [resolu]
Bonjour,
Je ne parvient pas à créer un fichier à partir de fopen.
$fichier1 = fopen ('testfichier.php', 'w');
fwrite ($fichier1, $d, 2);
fclose ($fichier1);
Je n'es aucun message d'erreur, y a t-il un module à installer ?
Je tourne avec la solution lamp, apache 2.0/php5.0...
Peut être un probléme de droit ?
Petite précision si elle a de l'importance, je traite le fopen dans un répertoire sous .htaccess.
Merci
Dernière modification par NewsUbuntu62 (Le 10/04/2008, à 11:00)
Hors ligne
#2 Le 09/04/2008, à 16:08
- slasher_fun
Re : fopen ne fonctionne pas :/ [resolu]
Déplacé dans développement/programmation
Hors ligne
#3 Le 09/04/2008, à 16:13
- wblitz
Re : fopen ne fonctionne pas :/ [resolu]
tu peux lancer la commande suivante :
ls -l /chemin/complet/testfichier.php
tu peux également vérifier si le safe_mode est activé dans le php.ini :
grep -i safe_mode /etc/php5/apache2/php.ini
enfin, peux-tu poster le contenu du fichier .htaccess en question ?
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#4 Le 09/04/2008, à 16:27
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Pour la première commande, il ne le trouve pas, ce qui me parait logique.
Pour la deuxième commande, le safe_mode n'est pas activé ( je doit donc l'activer sous php.ini mais y a t-il des risques en serveur de production ? ).
Pour le .htaccess :
AuthUserFile /home/user/repertoiremotdepasse/.passwrd
AuthName "Acces reserve"
AuthType Basic
Require valid-user
<FILES .passwrd>
deny from all
</FILES>
Hors ligne
#5 Le 09/04/2008, à 16:41
- yohann
Re : fopen ne fonctionne pas :/ [resolu]
je crois au contraire que fopen en fonctionne que si le safe_mode n'EST PAS activé
sinon c'est plutot le contraire les risque sont encourus si le safe mode n'est pas activer (cad que la securité est gerer au niveau du code php et moins au niveau du serveur)
par exemple il devient possible de creer des fichiers potentielement dangereux sur le serveur
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#6 Le 09/04/2008, à 16:45
- wblitz
Re : fopen ne fonctionne pas :/ [resolu]
pour le safe_mode, s'il est activé, fopen refuse d'ouvrir des fichiers si l'uid du fichier à ouvrir est différent de l'uid de l'utilisateur lançant le script php (donc quand c'est au travers d'apache, il faut que les fichiers appartiennent à www-data si le safe_mode est positionné à On)
est-ce que tu as regardé dans les logs du serveur ? (/var/log/apache2/*)
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#7 Le 09/04/2008, à 16:45
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Dans ce cas comment faire pour gérer fopen ?
J'ai l'impression de tourné en rond niveau sécurité.
Edit : Dans /var/log/apache2/ j'ai 4 fichiers, mais je ne voit rien au niveau du fopen
"il faut que les fichiers appartiennent à www-data" la je ne comprend pas.
Dernière modification par NewsUbuntu62 (Le 09/04/2008, à 16:55)
Hors ligne
#8 Le 09/04/2008, à 17:04
- wblitz
Re : fopen ne fonctionne pas :/ [resolu]
"il faut que les fichiers appartiennent à www-data" la je ne comprend pas.
si safe_mode est à On, si tu essaie d'ouvrir un fichier existant, ce fichier doit appartenir à www-data parce que le script php est lancé par apache (utilisateur www-data) si tu crées un nouveau fichier, il faut que le répertoire dans lequel tu le crées appartiennent à apache.
sinon, ajoute ceci après l'appel à fopen :
print_r(error_get_last());
ainsi qu'après l'appel à fwrite et celui à fclose
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#9 Le 09/04/2008, à 17:34
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Pour mettre le safe_mode à on, j'ai juste à changer le off en on de safe_mode dans le fichier php.ini ?
Par contre comment faire appartenir un fichier à www-data ?
Pour le répertoire qui doit appartenir à apache, comment faut-il faire pour qu'il appartiennes à apache ?
Hors ligne
#10 Le 09/04/2008, à 17:39
- yohann
Re : fopen ne fonctionne pas :/ [resolu]
sudo chown www-data:www-data ton_rep-ou-ton_fichier
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#11 Le 09/04/2008, à 17:55
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
En effet, avec les permissions www-data sur le fichier qui exécute la création du fichier et le répertoire sa fonctionne, mais niveau sécurité ?
Car j'aimerais stocker nom hote etc pour la bdd
Hors ligne
#12 Le 09/04/2008, à 18:09
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Maintenant si je regarde si le fichier existe avec file_exists il ne me le trouve pas.
J'ai fait mon file_exists sur la page 1 en user
J'écrit le fichier à partir d'un header page 2 en www-data
le fichier écrit ce retrouve dans un répertoire www-data
Si j'ai bien comprit si je souhaite appeler ce fichier de n'importe qu'elle page, je suis obliger de mettre quasiment tout le site en www-data ?
Hors ligne
#13 Le 10/04/2008, à 00:10
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Y a une chose que je ne trouve pas logique.
Je suis propriétaire du répertoire/fichier, j'ai les droits de lecture/écriture d'après mon user qui y figure.
Si je fait un clique droit sur un fichier, onglet permissions, que je mets aucun droit " aux autres ", je n'es même plus accès au site, je fait partie " des autres " ou je suis bien le proprio ?
Je ne comprend plus rien
Edit : Dans les permissions, champs Accés au fichier j'ai ---, si j'essaie de mettre lecture/écriture, je reviens toujours en --- j'ai essayer la commande chmod dans le terminal, idem.
Edit2 : Bon voila comment j'ai réglé le problème.
Dans le répertoire ou j'ai besoin de l'utilisation des fichiers, j'ai mit www-data dans le groupe, permissions accés au fichier.
chgrp www-data répertoire // de ce fait user reste proprio
Dans ma page header qui contient le code d'écriture du fichier toujours www-data dans le groupe en lecture seul.
Le répertoire qui contient le fichier est www-data dans le groupe en écriture+lecture
Le fichier crée et sous le propriétaire de www-data automatiquement.
Mais www-data c'est qui au juste ? sa veux dire quoi ?
Merci
Dernière modification par NewsUbuntu62 (Le 10/04/2008, à 01:21)
Hors ligne
#14 Le 10/04/2008, à 06:47
- wblitz
Re : fopen ne fonctionne pas :/ [resolu]
je suppose pour toute la suite que ton serveur apache est configuré avec seulement le virtualhost par défaut, dont le documentroot est /var/www.
je suppose que ton site est situé dans /var/www/mon_site. pour rendre ton site web accessible, il faut que l'utilisateur www-data (utilisateur sous lequel les processus apache tournent) aie accès au répertoire /var/www/mon_site ainsi qu'à tout ses sous-répertoires. l'idéal est de lancer la commande :
chown -R www-data:www-data /var/www/mon_site
afin de donner le contrôle total des fichiers à apache. pour fopen, ça a l'avantage de fonctionner tout le temps, même si safe_mode est à "On".
comme tu es en train d'écrire ton site, une autre solution peut être envisagée. je suppose que les fichiers pour ton site sont dans /home/ton_login/www/mon_site. fait un lien dans /var/www vers ce répertoire :
sudo ln -s /home/ton_login/www/mon_site /var/www
il faut qu'apache puisse lire ses fichiers :
sudo chgrp -R www-data /home/ton_login/www/mon_site
tu restes le propriétaire des fichiers et apache pour afficher les pages correctement. tu as également besoin qu'apache puisse écrire dans fichiers :
sudo chmod 775 /home/ton_login/www/mon_site
dans cette situation, apache pourra créer des fichiers dans le répertoire /home/ton_login/www/mon_site uniquement (pas dans les sous répertoires)
pour les sous-répertoires, soit tu donnes accès en écriture à tout :
sudo chmod -R 775 /home/ton_login/www/mon_site
soit seulement aux répertoires que tu veux :
sudo chmod 775 /home/ton_login/www/mon_site/repertoire_1
sudo chmod 775 /home/ton_login/www/mon_site/repertoire_2
...
sudo chmod 775 /home/ton_login/www/mon_site/repertoire_n
si la création de fichier ne marche toujours pas, pense à ajouter ça après chaque appel aux fonctions :
print_r(error_get_last());
et poste les erreurs.
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#15 Le 10/04/2008, à 10:59
- NewsUbuntu62
Re : fopen ne fonctionne pas :/ [resolu]
Pour le moment oui, apache est configurer avec le virtualhost par défaut.
Si je comprend bien www-data est apache, et ne sera jamais une personne "physique", car je m'inquiète plus pour la sécurité, d'ailleurs je passe plus de temps à sécuriser qu'a codé.
Mon site est déjà "situé" dans home/user/site j'ai installer l'alias comme le dit le tuto.
Par contre je n'es pas le répertoire www a ce niveau, je ferait donc un accueil en index sous /var/www/.
La tout fonctionne
Hors ligne