php webscript에서 유닉스 at
작업 명령을 실행하는 데 문제가 있습니다. at
작업과 PHP는 다음과 같습니다 php 스크립트에서 unix`at`가 쉘에서 작동하지만 웹에서는 작동하지 않습니다.
$output=exec('echo "/usr/bin/perl /home/dir/test.pl" | /usr/bin/at now +1minute')
이것은 쉘 명령 프롬프트에서 잘 작동합니다. 나는 PHP 스크립트를 실행하여
atq
을 실행하여 해당 작업이 설정되고 작업이 루트에 속하는지 확인할 수 있습니다. 그런 다음 test.pl 스크립트가 실행되었음을 기다리고 확인하십시오. test.pl 스크립트는 데이터베이스에 간단한 업데이트를 수행하여 모든 것이 제대로 작동하는지 확인할 수 있습니다.
웹에서 PHP 스크립트를 실행할 때 내 쉘로 돌아가서 atq
을 다시 실행하십시오. 나는 직업이 배치되었음을 볼 수있다. 이번엔 아파치에 속한다. 그래서 모든 것이 잘된 것처럼 보인다. 그러나 예약 된 시간을 기다린 후 db에 대한 업데이트가 작동하지 않았 음을 확인한 후에 test.pl 스크립트가 실행되지 않습니다.
나는 이것이 허가 문제가되어야 함을 알고 있지만 확실하지 않습니다. 나는/home/dir과 test.pl 스크립트 소유권을 아파치에 제공하려고했으나 여전히 작동하지 않습니다. webroot 폴더에서/home/dir에 대한 심볼릭 링크를 만들려고했으나 도움이되지 않았습니다. 나는 아파치 권한을 잘 모르기 때문에 뭔가를 간과 할 수있다.
여기 디렉토리이 하나에 어떤 도움
/home/dir
drwxrwxr-x 2 apache apache
test.pl
-rwxr-xr-x 1 apache apache
감사 OUPUT test.pl ls -l
입니다.
내가 잘못 이해했을 수도 있지만,'test.pl'의 권한을'chmod 777'으로 변경할 수 있습니다. 또한 일반적으로 Apache는 소유권이 없으며 관리자 또는 사용자는 소유권을 갖지 않습니다. –