>  기사  >  백엔드 개발  >  PHP file_exists() 함수가 아무런 효과가 없는 이유는 무엇입니까?

PHP file_exists() 함수가 아무런 효과가 없는 이유는 무엇입니까?

怪我咯
怪我咯원래의
2017-07-11 10:54:342781검색

file_exists — 파일이나 디렉터리가 존재하는지 확인하고, 지정된 파일이나 디렉터리가 존재하면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 이 글은 php에서 file_exists의 잘못된 해결 방법에 대한 자세한 분석 및 소개입니다. 필요한 친구는

방법 1: 공식 매뉴얼에 따르면 php 튜토리얼을 참조하세요. 안전모드 관련 설정을 너무 가혹하게 설정하면 파일이 실제로 존재함에도 불구하고 존재하지 않는 것으로 허위로 보고되는 상황이 발생합니다.

서버 측에서 php.ini를 제어할 수 없고 ini_set()을 사용할 때 안전 모드를 끌 수 없기 때문에 차선책을 사용하고 보다 안정적이고 안전한 탐지 방법을 찾을 수만 있습니다. 파일이 존재하는지 감지합니다. $_server['document_root']의 도움으로 이를 달성할 수 있습니다. $_server['document_root']는 웹사이트의 루트 디렉터리를 반환합니다. 디렉터리의 마지막 하위 디렉터리에는 다음과 같은 디렉터리 기호 "/"가 포함되어 있지 않습니다.
d:/www/htdocs
루트 디렉터리에 다음을 추가합니다. 감지해야 하는 파일의 경로에서 절대 경로를 얻을 수 있으며, PHP는 file_exists() 함수를 사용하여 이를 감지할 수 있습니다. 위 코드의 첫 번째 줄만 변경하면 됩니다(config.php 앞에 "/" 기호를 추가했음을 참고하세요):
$file=$_server['document_root']."/config.php"
이와 같이 코드 실행은 매우 안정적이며 예상치 못한 결과가 발생하지 않습니다.
위 방법은 보안으로 보호되는 디렉터리나 파일이 존재하는지 탐지할 수 있는 디렉터리(is_dir())나 파일(is_file()) 관련 탐지 기능에도 적용 가능합니다.

마지막으로, PHP 특수 설정으로 보호되는 이러한 유형의 파일은 참조할 때(includerequire) $_server['document_root'] 경로를 추가할 필요가 없습니다. PHP 문서는 인용이 허용됩니다.

방법 2: 저의 경우 파일이 윈도우와 리눅스 사이를 왔다 갔다 했습니다. 결과적으로 Linux에서는 파일 및 디렉터리에 대한 접근 권한이 변경되어 파일 소유자 외에는 누구도 접근 권한을 갖지 못하게 됩니다. chmod -r 755 xxx/*를 사용하면 문제가 해결되었습니다.

위 내용은 PHP file_exists() 함수가 아무런 효과가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.