Autoriser l'écriture de fichiers (chmod)



Pour que PHP puisse créer des fichiers, il doit avoir accès à un dossier qui lui en autorise la création. Il faut en effet donner le droit à PHP de créer et modifier les fichiers, sinon celui-ci ne pourra rien faire.

Pour créer ces droits, on dit en général qu'on doit modifier le CHMOD du fichier ou du dossier. C'est le nom de la commande qui permet de modifier les droits sous Linux.

Sous Windows, vous n'en avez probablement jamais entendu parler, tout simplement parce que ça n'existe pas. Mais le serveur de votre site, lui, est le plus souvent sous Linux. Et sous Linux, on utilise ce qu'on appelle le CHMOD pour gérer les droits.



Le CHMOD est un nombre à trois chiffres que l'on attribue à un fichier (par exemple 777). Selon la valeur de ce nombre, Linux autorisera (ou non) la modification du fichier.
Le problème, c'est que Linux n'autorise généralement pas les modifications de fichiers par un script PHP. Or, c'est justement ce qu'on veut faire. Alors, comment va-t-on faire pour s'en sortir ? En modifiant le CHMOD, pardi ! 

Il va falloir passer par… votre logiciel FTP ! Oui, celui-là même qui vous sert à envoyer vos pages sur le web. 
En ce qui me concerne, j'utilise FileZilla (vous pouvez utiliser celui que vous voulez, la manipulation est quasiment la même).

Comme nous n'avons pas de site à nous en SIN, on peut créer notre serveur FTP sous  Windows avec Filezilla Server. Il faut donc installer Filezilla Server sur votre machine et le configurer. Après il faut encore que ça fonctionne, j'ai pas eu le temps de tester. Si ça fonctionne, on doit pouvoir faire la suite.

Connectez-vous à votre serveur avec Filezila, et faites un clic-droit sur l'un des fichiers, pour obtenir la figure suivante.

Modifier les permissions d'un fichier



En général, vous devriez avoir un menu « CHMOD » ou « Permissions de fichier » (comme moi).
Cela devrait ouvrir une fenêtre qui ressemble à peu près à la figure suivante.

CHMOD à 777 pour activer l'écriture



Et c'est là que se trouve la solution à tous nos problèmes ! Sans rentrer dans les détails parce qu'il n'est pas question de faire un cours sur Linux ici, voilà comment ça fonctionne : il y a trois types de personnes qui ont le droit de lire/modifier des fichiers.

  • Le propriétaire : c'est l'utilisateur sous Linux qui a créé le fichier. Lui, il a en général tous les droits : lire, écrire, exécuter.
    Selon les droits qu'il possède, le premier chiffre du CHMOD change. Ici, c'est 7 : ça veut dire qu'il a tous les droits.
  • Le groupe : ça ne nous concerne pas trop là non plus. Ce sont les droits du groupe d'utilisateurs auquel appartient le fichier. Cela correspond au deuxième chiffre du CHMOD (ici : 7).
  • Permissions publiques : ah ! Là, ça devient intéressant. Les permissions publiques concernent tout le monde, c'est-à-dire même vos fichiers PHP. C'est le troisième chiffre du CHMOD (par défaut 5, il faut mettre cette valeur à 7).

Si vous rentrez 777 comme valeur pour le CHMOD, cela signifie que tous les programmes du serveur ont le droit de modifier le fichier, notamment PHP. Il faut donc rentrer 777 pour que PHP puisse modifier le fichier en question.

Vous pouvez aussi modifier le CHMOD d'un dossier. Cela déterminera si on a le droit de lire/écrire dans ce dossier.
Cela vous sera notamment utile si vous avez besoin de créer des fichiers dans un dossier en PHP.



Pour ceux qui veulent en savoir plus sur les CHMOD, je traite le sujet beaucoup plus en détail dans mon cours sur Linux. N'hésitez pas à aller lire le tutoriel si le sujet vous intéresse.

Créé avec HelpNDoc Personal Edition: Maximisez votre productivité avec l'interface utilisateur efficace de HelpNDoc