![파일 및 디렉터리에 대한 PHP 서버 권한이 부여되었지만 여전히 허용되지 않습니다.](https://rvso.com/image/1447624/%ED%8C%8C%EC%9D%BC%20%EB%B0%8F%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%20%EB%8C%80%ED%95%9C%20PHP%20%EC%84%9C%EB%B2%84%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EB%B6%80%EC%97%AC%EB%90%98%EC%97%88%EC%A7%80%EB%A7%8C%20%EC%97%AC%EC%A0%84%ED%9E%88%20%ED%97%88%EC%9A%A9%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
Codeanywhere에 PHP 코드가 있는데 서버에 파일을 생성하려고 하는데 다음 오류가 발생합니다.
"경고: fopen(file.txt): 스트림을 열지 못했습니다: 312행의 /home/cabox/workspace/index.php에서 권한이 거부되었습니다."
저는 fopen($file, 'w')을 사용합니다. 매개변수로 'r'을 사용하면 작동합니다.
사용자가 서버에서 직접 파일을 생성할 수 있는 코드를 사용하는 것을 방지하기 위해 CodeAnywhere에 제한 사항이 있는지 물었지만 제한 사항이 없으며 권한 부여 방법만 검색하면 된다는 답변을 받았습니다.
파일과 디렉토리 모두에 처음 사용된 chmod
chmod 755 index.php (이후에는 실험 목적으로 777)
그러나 여전히 위에 표시된 오류 메시지가 나타납니다. 그래서 서버 각 레벨의 권한을 파헤쳐 아래에 표시해 보았으나 이상한 점은 발견되지 않았습니다(제가 아는 지식이 얼마 되지 않음)
/
[cabox@box-codeanywhere /]$ ls -ld
drwxr-xr-x 21 루트 루트 4096 4월 19일 03:09
/집/
[cabox@box-codeanywhere home]$ ls -ld
drwxr-xr-x 3 루트 루트 4096 2014년 6월 16일
/홈/카박스/
[cabox@box-codeanywhere ~]$ ls -ld
drwxrwxrwx 7 cabox cabox 4096 4월 14일 11:48
/집/cabox/작업 공간/
[cabox@box-codeanywhere 작업 공간]$ ls -ld
drwxrwxrwx 4 cabox cabox 4096 4월 19일 04:27
다음에 대한 권한을 변경할 수 없습니다./사용자 이름은 다음과 같습니다.뿌리 내 사용자 이름이 다음과 같기 때문인 것 같습니다.캐박스
[cabox@box-codeanywhere 작업 공간]$ id
uid=500(cabox) gid=500(cabox) groups=500(cabox)
file.txt를 생성하려는 index.php는 다음 위치에 있습니다./집/cabox/작업 공간/
-rwxrwxrwx 1 cabox cabox 18608 4월 19일 05:12 index.php
내가 도대체 뭘 잘못하고있는 겁니까?
미리 감사드립니다!
답변1
많은 실험 끝에 가상 머신 개발 환경을 PHP가 아닌 Html5로 설정했다는 사실을 발견했습니다. 서버가 아파치이므로 Php 파일이 올바르게 작동했지만 여전히 나를 피하는 어떤 이유로 권한 관리가 다릅니다.
환경을 PHP로 전환한 후 이전에 작동하지 않았던 명령이 작동하고 마침내 문제를 파악할 수 있었습니다.
문제에 대한 나의 숙련도가 다소 제한되어 있기 때문에 소금 한 알갱이로 취해야 할 "해결책"은 다음과 같습니다.
자신의 사용자(cabox)에게 775 권한을 부여하는 것은 아무 일도 하지 않습니다. 'www-data' 사용자만이 웹사이트가 실행될 때 서버에서 파일을 생성, 수정, 삭제할 수 있는 권한을 갖기 때문입니다.
sudo chown -R www-data:www-data /home/cabox/workspace chmod 775 /home/cabox/workspace
이것이 트릭을 수행했습니다.
이제 codeanywhere에서 사용자 이름을 'www-data'로 변경하면 서버 작업, 파일 생성, 수정, 삭제 기능을 잃게 됩니다. 해결책은 사용자(cabox) 및 그룹(www-data) 권한을 설정하고 동일한 권한을 부여하는 것이라고 생각했지만 지금까지는 작동하지 않았으므로 여전히 해당 부분을 파악해야 합니다.
앞으로 같은 문제를 겪게 될 사람들에게 도움이 되길 바랍니다. 일주일이 걸렸는데 다소 실망 스러웠습니다. :)
답변2
파일이나 디렉터리의 소유자를 변경하고 싶을 수도 있습니다.
chown 사용자 이름 -R 폴더
. 나는 같은 문제가 있었고 이로 인해 문제가 해결되었습니다 ..
답변3
어쩌면 이것이 효과가 있을 수도 있습니다. 저도 같은 문제를 겪고 있었고 3시간 동안 Google을 검색한 후에 다음을 시도했습니다.
폴더 권한
설치를 완료하기 위해 해야 할 마지막 작업은 폴더 권한을 설정하는 것입니다. 이렇게 하려면 명령줄을 열고 다음을 입력하세요.
sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chown -R vm_username:www-data ~/workspace
적어도 나에게는 내가 겪고 있던 권한 문제를 해결하십시오.