<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이전의 내용은 기사의 내용과 관련이 없습니다.PHP코드 예제</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"># 언제is_readable기능이 반환됩니다false시간,일반적으로 이유는 무엇입니까??이 상황을 올바르게 다루는 방법?</span></span><span>
존재하다PHP가운데,`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`함수는 지정된 파일을 읽을 수 있는지 확인하는 데 사용됩니다.。반환 값은 부울 유형입니다:如果文件存존재하다且PHP프로세스는 파일을 읽을 수있는 권한이 있습니다,그런 다음 돌아옵니다 `</span><span><span class="hljs-literal">true</span></span><span>`;否그런 다음 돌아옵니다 `</span><span><span class="hljs-literal">false</span></span><span>`。언제你遇到`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`반품`</span><span><span class="hljs-literal">false</span></span><span>`시간,일반적으로 다음과 같은 이유가 발생할 수 있습니다:
</span><span><span class="hljs-comment">## 1. 文件不存존재하다</span></span><span>
이것이 가장 일반적인 이유 중 하나입니다。如果文件路径错误或文件根本不存존재하다,`</span><span><span class="hljs-title function_ invoke__">is_readable</span></span><span>()`自然会반품 `</span><span><span class="hljs-literal">false</span></span><span>`。해결책은 파일 경로가 올바른지 확인하는 것입니다.,并且文件确实存존재하다于服务器上。사용 가능`</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>()`函数先做一次存존재하다性检查:
```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">"文件不存존재하다: <span class="hljs-subst">$filePath</span></span></span><span>";
}
</span></span>
파일이 존재하더라도 PHP 프로세스 (예 : www-data 또는 apache )의 사용자에게 읽기 권한이없는 경우 iS_Readable () 가 False를 반환합니다. Linux 시스템에서는 LS -L을 사용하여 파일 권한을보고 CHMOD를 사용하여 권한을 수정할 수 있습니다. 예를 들어:
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 파일 이름
</span></span>
웹 서버는 일반적으로 보안 위험을 초래하므로 파일 권한을 777로 설정하는 것이 좋습니다. 일반적으로 644 (파일 소유자가 읽을 수 있고 읽을 수 있으며 다른 사용자가 읽을 수 있음)는 안전하고 충분한 권한 설정입니다.
PHP의 경로는 때때로 다음을 포함한 문제가 발생하기 쉽습니다.
상대 경로는 현재 작업 디렉토리와 일치하지 않습니다.
파일 이름 케이스 문제 (Linux 시스템의 사례 민감성)
디렉토리 또는 기호 링크 권한 문제
해결책 : __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">"파일을 읽을 수 없습니다: <span class="hljs-subst">$filePath</span></span></span><span>";
}
</span></span>
드문 경우, 파일이 다른 프로세스에 의해 잠겨 있거나 점유 된 경우 iS_Readable () 이 False를 반환 할 수 있습니다. 잠금 장치를 해제하거나 나중에 다시 시도해 볼 수 있습니다.
처리 할 때 다음과 같은 원칙을 따라야합니다.
사용자 또는 로깅 <br>에 대한 우선 순위 상기 알림 파일을 읽을 수 없을 때 프로그램이 직접 충돌하지 않도록하십시오. 문제 해결을 용이하게하기 위해 로그를 녹음 할 수 있습니다.
<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">"파일을 읽을 수 없습니다: <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">"文件暂시간无法读取,나중에 다시 시도하십시오。"</span></span><span>;
}
</span></span>
대안을 고치거나 제공해보십시오
파일이 존재하는지 확인하십시오. 존재하지 않으면 사용자가 업로드하도록 작성하거나 상기시킬 수 있습니다.
제어 가능한 경우 권한을 확인하십시오
기본 컨텐츠 또는 백업 데이터 소스를 제공하십시오
안전 우선 <br> 파일 권한이 불충분하더라도 마음대로 안전하지 않은 수준으로 권한을 늘리지 마십시오. 웹 응용 프로그램의 보안을 보장해야합니다.
요컨대, iS_Readable ()는 일반적으로 파일이 존재하지 않거나 권한이 충분하지 않거나 경로 오류로 인해 거짓을 반환합니다. 이를 다루는 올바른 방법은 다음과 같습니다. 먼저 원인을 확인한 다음 상황에 따라 사용자를 기록하거나 사용자를 프롬프트하거나 안전하게 수리하십시오.
<span><span><span class="hljs-comment">// 끝은 기사의 내용과 관련이 없습니다.PHP코드 예제</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>