2012-05-31 2 views
0

/content/images/2012/05/31/%object_id%/과 같은 폴더 구조로 사진을 업로드하는 PHP XML 구문 분석 스크립트가 있습니다. 이 파서는 주로 DirectAdmin cronjob으로 실행됩니다. 브라우저를 통해 파서를 실행하면서 cronjob에 대해 해당 디렉토리에 업로드 할 수 있도록 폴더 권한을 올바르게 가져 오는 데 많은 문제가 발생합니다.cron 및 브라우저에 대한 mkdir 권한이 거부되었습니다.

print_r(posix_getpwuid(fileowner($directory)));에 따르면 디렉토리 소유자는 get_current_user()과 동일합니다. 그럼에도 불구하고 나는 브라우저를 통해 스크립트를 실행할 때 Warning: mkdir() [function.mkdir]: Permission denied을받습니다. cron 작업으로 실행할 때 잘 작동합니다.

모든 폴더에는 chmod 0777이 있으며 새 폴더가 생성됩니다.

mkdir($path,0777,true); 

당연히 우리는 파일 자체를 업로드 및/또는 삭제할 때와 동일한 권한 문제가 있습니다.

cron 작업과 브라우저를 통해 실행되는 모든 파일 작업을 활성화하는 방법이 있습니까?

우리는 PHP 버전 5.2.17로 Linux를 실행하고 있습니다.

답변

1

몇 가지주의 할 점 : get_current_user는 .php 파일 (즉, 스크립트)의 소유자가되지만 PHP 스크립트를 실행하는 사용자의 이름은 아닙니다. 일반적으로 파일은 사용자 (일반 사용자)가 업로드하고 php/apache는 다른 사용자 ("apache"또는 "www"라고도 함)로 실행되므로이 ​​두 파일 중 후자가 필요합니다. 이 얻을 수있는 PHP 매뉴얼에서 제시 단편이다

$processUser = posix_getpwuid(posix_geteuid()); 
print $processUser['name']; 

은 -


을 (http://php.net/manual/en/function.get-current-user.php 의견을 참조)

현재의 문제를 해결하기 위해 PHP/apache가 실행중인 사용자 (crontab의 맨 페이지 확인)와 동일한 사용자로 cron을 실행하는 것이 좋습니다. 사용자는 위의 스 니펫에있는 사용자 여야합니다. CHOWN 파일 및 디렉토리를 동일한 사용자 (현재 루트 임) 및 사용자와 FTP 클라이언트가 공유하는 그룹에 추가합니다. 그런 다음 ftp에서 편집 할 수 있도록 사용자 및 그룹에 읽기 + 쓰기 권한이 있는지 확인하십시오. 스크립트에서 지시선 (775)과 파일 (644)에 대한 권한을 변경했는지 확인하십시오.

mkdir()의 경우 위의 디렉토리에도 사용자에 대한 쓰기 권한이 있어야합니다 (실제로 이것은 초기 문제 일 수 있으며 root/cron만이 그 곳에 쓸 수 있음).

+0

고마워요! 과연; 스 니펫을 사용할 때 스크립트가 "apache"로 실행되고 있음을 알 수 있습니다. 현재 최종 스크립트가 cron 작업으로 실행되고 다른 스크립트로 실행되도록 임시 해결책을 마련 중입니다. 또한 해당 폴더에 대한 적절한 권한과 그룹을 조사 할 것입니다. – DaFrenk

관련 문제