특정 폴더에 파일을 쓰려고 하는데 permission returned
오류가 발생합니다.
그래서 권한을 확인했는데 모든 것이 괜찮아 보였습니다. 개발환경이기 때문에 모든 파일을 쓰는 "root" 폴더에 대한 권한을 "Everyone can do everything"으로 변경하기로 했습니다. 아래의 모든 권한을 교체해 보았습니다. 상속된 권한을 제거하려고 합니다. 아무것도 할 수 없습니다.
그런 다음 "루트" 폴더에 파일을 작성해 보았습니다. 효과가 있었습니다. 하위 폴더에서는 작동했습니다. 하위 폴더에. 효율적인. 하위 폴더 체인에는 작동하지 않는 지점이 있지만 실제 하위 폴더 앞에 있습니다.
충돌 당시의 경로 계층 구조입니다.
으아악Class weecommonIOFile
는 내가 만들었지만 다른 곳에서도 사용할 수 있습니다.
제가 받은 정확한 오류 메시지는 다음과 같습니다.
fopen(DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg):无法打开流:权限被拒绝
100퍼센트 명확함: "루트" 폴더는 DRIVE:/BASE_PATH/files/
다음은 File
类的write
메소드의 구현입니다.
$f = new \wee\common\IO\File(); $f->write("DRIVE:/BASE_PATH/files/-/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/00.jpg", "hello"); // WORKS $pathLength = strlen("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg"); // Real path length is 85 $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg", "hello"); // FAILS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/00.jpg", "hello"); $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/workers/00.jpg", "hello");
이 문제는 PHP 5.6.26에서 발생합니다. 이 문제는 PHP 5.6.40에서 해결되었습니다.
원래 권한으로 재설정했는데 모든 것이 정상입니다!