2012-05-04 2 views
1

파일을 삭제하는 PHP 스크립트가 있습니다. 그것은 내 루트 디렉토리에서 파일을 삭제할 수 있지만 하위 디렉토리에서 삭제하려고하면 "Permission denied"라고 표시됩니다. 파일을 읽고 쓸 수 있기 때문에 파일이 존재하고 PHP가 파일에 액세스 할 수 있지만 파일을 삭제할 수는 없습니다. 왜?PHP 하위 디렉토리에서 파일을 삭제 하시겠습니까?

편집 : 관련성이있는 경우 Zymic 호스팅을 사용하고 있습니다. 하지만 삭제 작업이 잘되는 Zymic 사이트가 있습니다. 나는 그것을 얻지 않는다 ...

EDIT : 내가 삭제할 코드와 PHP 파일에 액세스하는 아약스를 사용하고, 아약스는 삭제할 파일 이름을 보냅니다. 경고 메시지가 나를 위해 인쇄하기 때문에 보낸 파일 이름이 올바른지 확인합니다. PHP 코드는 다음과 같습니다.

$file=$_POST['file']; 
echo unlink($file); 

편집 : 수정했습니다. 나는 이것이 왜 효과가 있었는지는 모르겠지만 755에서 775로 디렉토리를 FTP-chmodded 누군가가 왜 효과가 있는지 말해 줄 수 있습니까?

+3

코드를 게시하십시오. – Tibor

+1

파일 및 디렉토리에 대한 사용 권한은 무엇입니까? [AppArmor] (http://wiki.ubuntu.com/AppArmor/), [SELinux] (http)와 같은 [필수 액세스 제어] (http://en.wikipedia.org/wiki/Mandatory_access_control) 도구를 사용하고 있습니까? : //en.wikipedia.org/wiki/Security-Enhanced_Linux), [TOMOYO] (http://tomoyo.sourceforge.jp/index.html.en) 또는 [SMACK] (http : // schaufler-ca. co.kr /)? 이 중 어떤 것도 파일 삭제를 막을 수 있습니다. 관련된 메시지에'dmesg (1)'출력과'/ var/log/audit/audit.log'를 확인하십시오. – sarnold

+0

@sarnold 왜 답변으로 게시하지 않으시겠습니까? – jjclarkson

답변

4

파일을 삭제하려면 해당 파일이 들어있는 폴더에 대한 쓰기 권한이 필요합니다. 먼저 해당 파일을 확인하십시오.

CHMOD XXX -> 소유자 그룹 기타

제 경우 : 755 - 소유자 (읽기, 쓰기 및 실행), 그룹, 기타 (판독 실행) (실행 판독)

초 경우 : 775 - 소유자 (읽기, 쓰기, 실행), 그룹 기타 (읽기, 쓰기, 실행) 실행중인 스크립트의 시작 부분이 추가

+0

그는 파일에 쓸 수 있다고 언급했다. – debianek

+1

@debianek : 파일에 쓰는 것은 파일을 삭제할 수있는 _no_ 관계가 있습니다. – sarnold

+0

디렉토리를 Chmodding하는 것이 효과가있는 것으로 보입니다. 하지만 왜? 이미 파일에 쓸 수 있었는데 ... – DankMemes

1

시도를 (읽기, 실행) :

error_reporting(E_ALL | E_STRICT); 
벌어지고 정확하게 무엇을 지적 할 수 있어야한다

는, 기회는 당신이 리눅스 환경에서 작업하는 경우에 특히 폴더

을 쓸 수있는 권한이하지 않는 것이 있습니다. 리눅스에서는 모든 것이 파일이고 심지어 폴더입니다. 파일을 삭제할 때는 폴더를 나타내는 파일에 쓸 수 있어야합니다. 삭제하려는 파일에 쓸 수있는 권한을 가지고 있으면 파일을 삭제하는 것과 아무런 관련이 없습니다.

+0

알아! 나는 그것을 고쳤다 고 말했다! 나는 775로 폴더를 chmodded – DankMemes

1

unlink ($ myfile)를 사용하기 전에 fclose ($ myfile)를 먼저 삭제해야합니다. 다른 사람이 서버에서 열어두면 삭제하지 않기 때문입니다. 또한이 스크립트를 삭제하려는 파일과 동일한 디렉토리에 두십시오. 그렇지 않으면 실수로 전체 디렉토리를 삭제할 수 있습니다.

+0

아니, 나는 775로 chmodded 고 그것은 효과가있다. – DankMemes