나는 우분투 16.04를 실행하고 있습니다. 나는 var/www/html/CronScripts/
에있는 PHP 스크립트를 cronjob으로 실행하려고합니다. 이 모든 스크립트는 동일한 디렉토리에 .txt
또는 .out
파일을 만듭니다.PHP 스크립트를 CRONJOB으로 실행하여 .txt 파일을 만들 때 권한이 거부되었거나 뭔가가 발생했습니다.
<?php
$handle = fopen("theFileHandle.out", "a");
fwrite($handle, "The quick brown fox jumps over a lazy dog.\n");
fclose($handle);
?>
지금 문제는 내가 브라우저에서 열어이 스크립트를 실행할 때, 나는 다음과 같은 오류를 얻을 수 있다는 것입니다 : 여기에 스크립트입니다
Warning: fopen(theFileHandle.out): failed to open stream: Permission denied in /var/www/html/CronScripts/index.php on line 3
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/CronScripts/index.php on line 4
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/CronScripts/index.php on line 5
그래서 내 추론했다은이 경우 스크립트가 sudo
으로 실행되면 허가 문제가 발생하지 않습니다. 내가 궁극적으로 cronjob에서 스크립트를 실행하기 위하여려고하고 있기 때문에, 나는 sudo
사용자의 crontab 파일에 때라도으로 cronjob을 추가 터미널
sudo crontab -e
에서 다음 명령을 실행.
* * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/output.out
이 후, output.out
라는 이름의 파일이 ** 생성하지만 IT는 EMPTY 하였다.
www-data
사용자
에 의해 운영되며 결론을 내렸다. 따라서 su -s /bin/bash www-data
을 실행하여 www-data
으로 전환 한 다음 해당 crontab에 * * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/out.out
을 추가했지만 출력 로그 파일 out.out
이 생성되지 않았습니다. 제 질문은 왜 제가이 문제에 직면하고 있으며 어떻게 해결할 수 있습니까?
첫 번째 경우 sudo ...를 실행할 때 /var/log/apache2/error.log에 오류가 있습니까? 그리고이 명령 행의 결과는 무엇입니까? ls -la/var/www/html? – Nico