root 1603 1 0 02:14 ? 00:00:00 /usr/sbin/httpd
apache 1645 1603 0 02:14 ? 00:00:00 /usr/sbin/httpd
Le process root est le maître, qui a la possibilité d'ouvrir le port 80 en écoute et gère les requêtes reçues vers ses fils. Ceux-ci fonctionnent sous l'identité apache, pour éviter les catastrophes en cas de faille.
drwxrwxrwx. 2 romain romain 4096 15 août 15:52 /var/www/html
Ce n'est pas normal, que ce soit du point de vue des permissions comme du propriétaire. En toute logique, le propriétaire devrait être apache et seul lui devrait pouvoir modifier le contenu (voir même le lire si on est facho) :
chown -R apache:apache /var/www/html
chmod 755 /var/www/html
Attention, cela a pour conséquence qu'un utilisateur simple (dont romain) n'a plus le droit d'éditer les fichiers contenus dans le répertoire en question. Deux solutions possibles :
- utiliser sudo pour éditer les fichiers.
- utiliser le groupe en ajoutant l'utilisateur romain au groupe apache et donner les droits de modifications au groupe dans le répertoire (chmod -r g+w /var/www/html ).
A partir de là, tu reviens à une situation correcte. Et si ça ne marche pas, il sera temps de voir, mais il vaut mieux éviter de bricoler les permissions. Je te conseille quand même de spécifier le nom du fichier en absolu dans ton fopen, et d'activer temporairement l'affichage des erreurs PHP pour débugger (Cf. la doc PHP pour ce dernier point).
j'exécute mon script dans un navigateur.cela changrrais quelque chose que je l'exécute en ligne de commande?
Oui, tu changerais l'environnement d'exécution (pas de contrainte sur le répertoire dans lequel mettre le script, exécution sous l'identité de l'utilisateur qui le lance, etc...). Cela nécessite un package particulier (par exemple php5-cli sous debian).