Как настроить CRON для выполнения php-файла вне публичной html-папки?

Как настроить CRON для выполнения php-файла вне публичной html-папки?

У меня есть php-файл, расположенный, скажем, например, по адресу:

/data/web/process.php

Этот файл не является общедоступным (виртуальный хост не запущен в этой папке, но установлен Apache). Мне нужно запускать этот файл каждую минуту каждый день.

Я знаю, что могу открыть 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 -e, поэтому если вы запустите его от имени пользователя rimmer, он запустится от имени rimmer, если от имени root, он запустится от имени root.

если вы хотите, чтобы он был запущен от имени пользователя Apache, выполните:

sudo -u www-data crontab -e

предполагая, что www-data — ваш пользователь apache. Вы также можете создать файл /etc/cron.d/my-php-job.

Убедитесь, что ни один злодей не сможет редактировать файл /data/web/process.php, и внимательно проверьте этот файл. Я бы сделал этот файл владельцем root и с правами 644. Не делайте его владельцем пользователя Apache и доступным для записи.

решение2

Попробуйте следующее:

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

Связанный контент