L'une des raisons les plus courantes est que les autorisations pour les fichiers ou les répertoires sont mal définies. Les autorisations d'écriture sur les fichiers ou les répertoires sont généralement gérées par le système de fichiers du système d'exploitation. Si les autorisations pour un fichier ou un répertoire ne sont pas définies sur Writable, la fonction is_witable renvoie false .
Vous pouvez utiliser la commande CHMOD pour modifier les autorisations pour les fichiers ou les répertoires. Dans les systèmes Linux ou MacOS, vous pouvez définir un fichier ou un répertoire pour être écrit en suivant la commande suivante:
<span><span><span class="hljs-built_in">chmod</span></span><span> 777 nom de fichier
</span></span>
Cette approche donne aux utilisateurs (propriétaires, utilisateurs de groupe et autres utilisateurs) pour lire, écrire et exécuter. Cependant, pour des raisons de sécurité, il est préférable d'accorder uniquement les autorisations nécessaires. Par exemple, si vous n'avez besoin que du propriétaire de fichier pour avoir des autorisations d'écriture, vous pouvez utiliser:
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 nom de fichier
</span></span>
Même si le fichier cible ou le répertoire lui-même a des autorisations d'écriture, IS_Witable reviendra false si le répertoire parent qu'il est situé n'a pas d'autorisations d'écriture. En effet, l'opération d'écriture de fichiers nécessite la création ou la modification du fichier dans le répertoire parent.
Assurez-vous que le répertoire parent du fichier a également des autorisations d'écriture. Vous pouvez utiliser la commande CHMOD pour vérifier et définir les autorisations du répertoire parent pour vous assurer que le répertoire est écrite aux utilisateurs concernés.
<span><span><span class="hljs-built_in">chmod</span></span><span> 755 Nom du répertoire parent
</span></span>
Si un fichier ou un répertoire est utilisé par un autre processus ou verrouillé par un autre programme, IS_Witable peut renvoyer false . Cela se produit généralement lorsqu'un fichier est rédigé par d'autres programmes, ou lorsque certains outils de gestion de fichiers verrouillent le fichier.
Attendez que d'autres processus terminent le fonctionnement du fichier ou essayez de fonctionner pendant une période non conflitante. Vous pouvez également utiliser la fonction Flock pour verrouiller les fichiers pour éviter que les fichiers soient modifiés par d'autres programmes pendant l'opération.
Dans certains cas, le système de fichiers peut être en mode en lecture seule. Par exemple, IS_Witable renvoie également false lorsque le système de fichiers rencontre une erreur, ou le disque est dans un état en lecture seule.
Vérifiez l'état du système de fichiers pour vous assurer que le disque n'est pas corrompu et que le système de fichiers est en mode lecture et écriture. Dans Linux Systems, vous pouvez utiliser la commande Mount pour voir si le système de fichiers est en mode en lecture seule:
<span><span>mount | grep </span><span><span class="hljs-string">'ro'</span></span><span>
</span></span>
Si le système de fichiers est en lecture seule, essayez de le remémorer comme lisible et écrite:
<span><span>sudo mount -o remount,rw /Point de montage
</span></span>
Dans de nombreux environnements Web, le serveur Web s'exécute en tant qu'utilisateur spécifique, par exemple, Apache s'exécute généralement en tant qu'utilisateur www-data ou Apache . IS_Witable peut également renvoyer false si le propriétaire d'un fichier ou d'un répertoire est différent de l'utilisateur du serveur Web et que les autorisations pour le fichier ne sont pas définies correctement.
Assurez-vous que l'utilisateur du serveur Web a les autorisations d'écriture de fichiers appropriées. Vous pouvez utiliser la commande chown pour modifier le propriétaire d'un fichier ou d'un répertoire:
<span><span><span class="hljs-built_in">chown</span></span><span> www-data:www-data nom de fichier
</span></span>
De plus, assurez-vous que le fichier ou le répertoire dispose de paramètres d'autorisation appropriés pour permettre aux utilisateurs du serveur Web d'écrire.
Dans certains systèmes Linux hautement sécurisés, des modules de sécurité tels que Selinux ou Apparmor peuvent restreindre les autorisations d'écriture de fichiers. Ces mécanismes de sécurité peuvent provoquer une IS_Witable pour renvoyer false même si le système de fichiers et les autorisations de fichiers sont corrects.
Vérifiez la configuration de Selinux ou Apparmor pour vous assurer qu'il n'y a pas de restrictions de contrôle d'accès supplémentaires. Si Selinux est activé, vous pouvez utiliser la commande GETENFORCE pour vérifier l'état actuel:
<span><span>getenforce
</span></span>
Si la sortie est appliquée , vous pouvez temporairement désactiver SELINUX ou ajuster la politique pour autoriser les opérations d'écriture:
<span><span>setenforce 0
</span></span>
L'espace disque dur insuffisant peut entraîner l'écriture de nouvelles données sur le système de fichiers, ce qui à son tour provoque un renvoi de False IS_Witable . Lorsque le disque est plein, le système d'exploitation ne peut pas effectuer une opération d'écriture même si les autorisations de fichier sont correctes.
Vérifiez l'espace disque dur pour vous assurer qu'il y a suffisamment d'espace restant. Vous pouvez utiliser la commande DF pour vérifier l'espace disque:
<span><span><span class="hljs-built_in">df</span></span><span> -h
</span></span>
Si l'espace disque est plein, les fichiers inutiles ou l'espace disque étendu doivent être nettoyés.
Si vous utilisez un système de fichiers partagé réseau (tel que NFS), IS_Witable Renvoie False , ce qui peut être dû au fait que le système de fichiers monté réseau n'a pas de permis d'écriture correctement configurés.
Vérifiez les options de montage de NFS ou d'autres systèmes de fichiers réseau pour vous assurer que le système de fichiers est monté en mode lecture et écriture. S'il s'agit de NFS, vous pouvez configurer l'option RW Mount dans / etc / fstab .
<span><span>nfs-server:/path/to/directory /mount/point nfs defaults,rw 0 0
</span></span>