Php

BASH-創建一個執行 PHP 文件的“www-data”crontab

  • November 23, 2018

我需要讓它在 cron 文件中執行/etc/cron.d/

*/15 * * * * php -f /var/www/nextcloud/cron.php

…但是,我的腳本沒有執行。它的權限設置為 644,我需要使用 Shell/BASH 腳本創建它。我正在使用:

echo “*/15 * * * * php -f /var/www/nextcloud/cron.php” > /etc/cron.d/nccron

我究竟做錯了什麼?

有一種更簡單的方法(必須以root使用者身份完成)

echo '*/15 * * * * www-data php -f /var/www/nextcloud/cron.php' > /etc/cron.d/wwwcron

我會使用單引號而不是雙引號來防止任何擴展“*”元符號的可能性。

  1. 要執行 PHP cron 作業,www-data需要自己執行 crontab 作業,php -f使用$$ user $$在 cronjob 行內:

*/15 * * * * php -f /var/www/nextcloud/cron.php

(這些是 Nextcloud 的說明。他們做對了,就我而言,不要試圖破解它。)

  1. www-data必須將 cron 作業本身作為 crontab 執行(不是/etc/cron.d等)

通常,這是從終端設置的:

root這個例子一樣執行……

crontab -u www-data -e…添加 cronjob 字元串(上圖)。

crontab -u www-data -l…它應該匹配。

但是,我需要將其作為腳本完成,而不是crontab -e在終端中。

  1. 通過 shellscript 執行此操作(危險?):

crontab 職位在:/var/spool/cron/crontabs/USER

有權限:-rw------- ... www-data crontab

有效的腳本:

root這個例子一樣執行……

echo "*/15 * * * * php -f /var/www/nextcloud/cron.php" >> /var/spool/cron/crontabs/www-data
chown www-data:crontab /var/spool/cron/crontabs/www-data
chmod 600 /var/spool/cron/crontabs/www-data

哦,快樂的一天!

引用自:https://serverfault.com/questions/939239