공개 HTML 폴더 외부에서 PHP 파일을 실행하도록 CRON을 설정하는 방법은 무엇입니까?

공개 HTML 폴더 외부에서 PHP 파일을 실행하도록 CRON을 설정하는 방법은 무엇입니까?

예를 들어 다음 위치에 PHP 파일이 있습니다.

/data/web/process.php

이 파일은 공개적으로 사용할 수 없습니다(해당 폴더에서는 가상 호스트가 실행되지 않지만 Apache가 설치되어 있음). 매일 1분마다 이 파일을 실행해야 합니다.

를 사용하여 crontab을 열 수 있다는 것을 알고 있지만 crontab -e수행해야 할 작업이 작동하려면 파일에 정확히 무엇을 써야 하는지 잘 모르겠습니다.

도움 좀 주세요.

답변1

실행 crontab -e하고 줄을 추가하세요:

* * * * * /usr/bin/php -f /data/web/process.php 2>&1 >> /path/to/output/file.log

그렇게 하기 전에 /usr/bin/php -f /data/web/process.php원하는 대로 작동하는지 확인하세요. 또한 cron은 을(를) 호출한 동일한 사용자로 실행되므로 crontab -erimmer 사용자로 실행하면 rimmer로 실행되고 루트로 실행되면 루트로 실행됩니다.

Apache 사용자로 실행하려면 다음을 수행하십시오.

sudo -u www-data crontab -e

www-data가 Apache 사용자라고 가정합니다. 파일을 생성할 수도 있습니다 /etc/cron.d/my-php-job.

악의적인 사람이 /data/web/process.php 파일을 편집할 수 없도록 하고 해당 파일을 주의 깊게 검토하십시오. 이 파일을 루트 소유로 만들고 644 권한을 부여하겠습니다. 아파치 사용자가 소유하고 쓸 수 있도록 만들지 마십시오.

답변2

다음을 시도해 보세요:

/path/to/php -f /data/web/process.php

관련 정보