Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

Hors ligne