<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Le précédent n'a rien à voir avec le contenu de l'articlePHPExemple de code</span></span><span>
</span><span><span class="hljs-variable">$greeting</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$greeting</span></span><span>;
</span><span><span class="hljs-comment">// --------------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span><span><span class="hljs-comment"># quandis_readableRenvoie la fonctionfalseheure,Quelle est généralement la raison?Comment gérer correctement cette situation?</span></span><span>
existerPHPmilieu,`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`La fonction est utilisée pour vérifier si le fichier spécifié est lisible。Sa valeur de retour est de type booléen:如果文件存exister且PHPLe processus a la permission de lire le fichier,Puis retourner `</span><span><span class="hljs-literal">true</span></span><span>`;否Puis retourner `</span><span><span class="hljs-literal">false</span></span><span>`。quand你遇到`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`retour`</span><span><span class="hljs-literal">false</span></span><span>`heure,Habituellement, les raisons suivantes peuvent être causées:
</span><span><span class="hljs-comment">## 1. 文件不存exister</span></span><span>
C'est l'une des raisons les plus courantes。如果文件路径错误或文件根本不存exister,`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`自然会retour `</span><span><span class="hljs-literal">false</span></span><span>`。La solution consiste à s'assurer que le chemin du fichier est correct,并且文件确实存exister于服务器上。Disponible`</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>()`函数先做一次存exister性检查:
```php
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件不存exister: <span class="hljs-subst">$filePath</span></span></span><span>";
}
</span></span>
Même si le fichier existe, is_readable () renvoie false si l'utilisateur du processus PHP (tel que www-data ou apache ) n'a pas d'autorisations de lecture. Dans Linux Systems, vous pouvez utiliser LS -L pour afficher les autorisations de fichiers et utiliser CHMOD pour modifier les autorisations. Par exemple:
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 nom de fichier
</span></span>
Notez que les serveurs Web ne recommandent généralement pas de définir les autorisations de fichiers à 777, car cela présente des risques de sécurité. Habituellement, 644 (lisible et lisible par le propriétaire du fichier, lisible par d'autres utilisateurs) est un paramètre d'autorisation sécurisé et suffisant.
Les chemins de PHP sont parfois sujets aux problèmes, notamment:
Le chemin relatif est incompatible avec le répertoire de travail actuel
Problème de cas de nom de fichier (Care sensible dans le système Linux)
Problèmes d'autorisation de répertoire ou de lien symbolique
Solution: essayez d'utiliser des chemins absolus ou d'obtenir le répertoire de script actuel via __dir__ :
<span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/data/myfile.txt'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Impossible de lire le fichier: <span class="hljs-subst">$filePath</span></span></span><span>";
}
</span></span>
Dans de rares cas, is_readable () peut retourner faux si le fichier est verrouillé ou occupé par d'autres processus. Vous pouvez essayer de libérer le verrou ou réessayer plus tard.
Les principes suivants doivent être suivis lors de la manipulation:
Rappel prioritaire pour les utilisateurs ou la journalisation <br> Ne laissez pas le programme s'écraser directement lorsque le fichier est illisible. Vous pouvez enregistrer des journaux pour faciliter le dépannage:
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Fichier non lisible: <span class="hljs-subst">$filePath</span></span></span><span>");
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件暂heure无法读取,Veuillez réessayer plus tard。"</span></span><span>;
}
</span></span>
Essayez de réparer ou de fournir des alternatives
Vérifiez si le fichier existe. S'il n'existe pas, vous pouvez créer ou rappeler à l'utilisateur de le télécharger.
Vérifier les autorisations, si contrôlable, peut être modifiée
Fournir des sources de données de contenu ou de sauvegarde par défaut
Sécurité d'abord <br> Même si les autorisations de fichier sont insuffisantes, n'augmentez pas les autorisations au niveau dangereux à volonté. Vous devez assurer la sécurité des applications Web.
En bref, is_readable () renvoie false généralement causé par le fichier n'existe pas, des autorisations insuffisantes ou des erreurs de chemin. La bonne façon d'y faire face est: vérifiez d'abord la cause, puis enregistrez l'utilisateur en fonction de la situation, invitez l'utilisateur ou réparez-le en toute sécurité.
<span><span><span class="hljs-comment">// La fin n'a rien à voir avec le contenu de l'articlePHPExemple de code</span></span><span>
</span><span><span class="hljs-variable">$farewell</span></span><span> = </span><span><span class="hljs-string">"Goodbye!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$farewell</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>