2011-12-28 16 views
9

fopen을 사용하여 새 파일을 만듭니다.fopen은 파일을 생성하지만 권한을 변경하는 방법은 무엇입니까?

$filename = 'user_data/10.xml'; 
$openhandle = fopen($filename, 'w+'); 

그런 다음 파일이 생성되었는지 확인합니다. file_exists() 기능.

문제는 다음과 같습니다. 파일이 일부 소유자, 아마도 폴더 이름으로 만들어 지지만 그 파일이 아닙니다. 또한 파일의 사용 권한은 readable by the owner입니다. 그리고 소유자가 아니기 때문에 파일을 읽거나 권한을 변경할 수 없습니다.

하지만 시도는 사용하여 변경하는 경우 :

chown($filename, 'myusername'); 
chmod($filename, 777); 

내가 파일 소유자 및 터미널을 사용하여 권한을 sudo를 사용하여 변경했습니다. 그것은 제대로 작동했습니다. 그래서 나는 위의 함수를 shell_exec()과 함께 사용하여 루트에서 실행되도록 노력했습니다.

하지만 운이 없었습니다.

비록 파일 권한 번호에 많은 경험이 없지만 chown 명령도 작동하지 않습니다.

그럼 소유자 및 다른 PHP 스크립트에서 읽고 쓸 수 있도록 파일 소유자와 권한을 어떻게 변경해야합니까?

+0

파일 업로드시 (chmod 이전), 파일에 대한 사용 권한, user_data 폴더에 대한 사용 권한 및 할당 된 사용자는 누구입니까? –

+0

새로운 빈 파일을 만든 다음 fwrite()를 사용하여 빈 파일을 작성합니다. 파일에 대한 사용 권한은 다음과 같습니다 소유자 및 그룹 : www가 데이터 소유자 : 읽기 그룹 : 기타를 실행하십시오 _ 데이터 폴더에 을 실행, 내가 주인이야 모든 삼명이 읽기 전용으로 설정되어, 쓰기 , Execute ... –

+0

TimWickstrong에 따르면 chmod 명령 앞에 0을 추가해야하지만 chmod에 대한 권한이 없을 수도 있습니다. 시도해보십시오 $ chmoded = chmod ($ filename, 0777); if (! $ chmoded) {echo "파일 사용 권한을 변경할 수 없습니다";} ... 또한 파일 사용 권한이 777이면 chown 할 필요가 없습니다. –

답변

17

에만 다음 줄을 사용하여 chmod를 할 수 있어야한다 :이

을 chmod'ed되기 전에 또한 777

전에 0 소유권을 변경하지 마십시오

chmod($filename, 0777); 

+0

자세한 정보는 여기에서 찾을 수 있습니다 : http://php.net/manual/en/function.chmod.php –

+0

괜찮 았는데, 이것은 완벽하게 작동했습니다 ... 덕분에 많이 ... : D –

+1

괜찮습니다! 다행스럽게 도울 수있어! –