PHP 에서 fileexists 사용 중 발생 한 문제 요약
3449 단어 PHPfile exists
나 는 오늘 여러분 과 나 누 는 문 제 를 발견 했다.나 는 전체 과정 을 묘사 했다.
문제:회사 의 프레임 워 크 는 smarty 를 바탕 으로 쓴 것 입 니 다.저 는 phop 의 업 그 레이 드 를 책임 집 니 다.관리자 가 새로운 환경 을 올 린 후에 테스트 직원 이 저 를 찾 아와 자주 오 류 를 제 기 했 습 니 다(오류:알림 에서 파일 을 찾 을 수 없습니다).
나 는 코드 를 추적 해 보 았 는데,알 고 보 니 스마트 의 이 곳 에서 보고 한 잘못 이 었 다.
오류:파일 이 존재 하지 않 습 니 다.
사고 과정:
1.프로그램 에 이 파일 이 없 는 줄 알 았 는데 파일 이 있 더 라 고요.그게 어떻게 된 일 입 니까?
2.나중에 나 는 phop 커 널 에 문제 가 있 는 지 다시 추측 했다.나 는 phop 과 관련 된 커 널 문 서 를 한 번 보 았 지만 문 제 를 발견 하지 못 했다.결국 나 는 모든 과정 을 프로젝트 매니저 에 게 말 했다.일 도 해결 되 지 않 았 는데,이렇게 먼저 흐지부지 되 었 다.진급 하 는 일이 먼저 지체 되 고 있다.
오늘 또 이 문 제 를 발 견 했 습 니 다.제 첫 번 째 반응 은 phop 버 전이 업그레이드 되 었 는 지 아 닌 지 를 발 견 했 습 니 다.나중에 전체 디 렉 터 리 를 777 로 설정 하면 괜찮아 집 니 다.혹시 fileexists()방법 문제.
그래서 나 는 관련 디 버 깅 과 실험 을 진행 했다.
디 버 깅 프로 세 스 디 버 깅 코드:
디 렉 터 리:
각 권한 관찰:test 는 ww 에 권한 이 없 으 며,실행 파일 index.php 는 읽 기와 쓰기 실행 권한 이 있 으 며,파일 test.txt 를 포함 하여 읽 기와 쓰기 권한 이 있 습 니 다.
실행 결과:
디 렉 터 리 실행 권한 영향 fileexists()
1.test 에 게 가장 큰 권한 을 준다―755
성공 한 이상 file 설명exists()함 수 는 디 렉 터 리 권한 의 제한 을 받는다.
어떤 디 렉 터 리 권한 이 file 에 영향 을 줍 니까?exists()는?
나 는 몇 가지 실험 을 했다.
1.파일 의 모든 상위 디 렉 터 리 는 쓰기 권한 타 임 스 파일 만 존재 하지 않 습 니 다.
2.파일 의 모든 상위 디 렉 터 리 는 읽 기 권한 만 있 을 때 파일 이 존재 하지 않 습 니 다.
3.모든 상위 디 렉 터 리 가 실행 권한 이 있 을 때 보고 파일 은 존재 하고 모든 것 이 정상 입 니 다.
결과,설명 fileexists()는 파일 이 존재 하 는 지 여 부 를 판단 할 때 모든 디 렉 터 리 에 실행 권한 이 있 는 지 재 귀적 으로 판단 합 니 다.
파일 경 로 를 상대 경로 로 수정 하여 같은 결 과 를 얻 을 수 있 습 니 다.
총결산
php 매 뉴 얼 에 언급 되 지 않 았 습 니 다.fileexists 는 디 렉 터 리 의 실행 권한 에 영향 을 받 습 니 다.이 글 을 통 해 이 문제 도 있 는 개발 자 들 에 게 알 립 니 다.이것 만 을 경계 로 하 다.
추가 정보
여러분 이 남 겨 주신 말씀 에 감 사 드 립 니 다.매우 유용 합 니 다.여러분 의 의견 을 통 해 저 는 매 뉴 얼 을 다시 찾 아 보 았 습 니 다.확실히 디 렉 터 리 에 실행 권한 이 없 으 면 pp-fpm 응용 프로 세 스 는 이 디 렉 터 리 아래 에서 파일 검색 을 할 수 없습니다.물론 파일 이 존재 하지 않 는 다 고 생각 합 니 다.(실제 실행 가능 한 디 렉 터 리 가 없다 고 생각 합 니 다)매 뉴 얼 내용 은 모두 가 함께 고려 해 볼 수 있 는데,주로 집행 권한 이다.여기 서 읽 기와 쓰기 권한 에 대해 서 는 자세히 이야기 하지 않 겠 습 니 다.
분명 한 매 뉴 얼 에 서 는 디 렉 터 리 의 실행 권한 에 대해 명확 한 지 시 를 하고 있 습 니 다.디 렉 터 리 에 대한 실행 권한 은 검색 할 권리 가 있 습 니 다.
만약 에 이 글 이 당신 에 게 도움 이 되 거나 이런 문 제 를 해결 하 게 해 준다 면 친구 들 이 더욱 강 한 창작 동력 을 가 질 수 있 도록 추천 해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.