Php

Debain cron 幫助訪問 URL

  • April 28, 2012

文件說我需要:

如果您的主機帳戶在 LINUX/UNIX 系統上,您可以設置 CRON 作業以指向此 URL http://yourUrlToThisScript.com/cron.php?cron=do&d=31

儘管這是他們提供的有關如何設置 cron 的唯一資訊。我知道腳本工作正常,因為當我通過瀏覽器訪問 URL 時,我會收到電子郵件。

  1. 我查看了幾個範例並嘗試閱讀手冊:執行 PHP 文件並提出: */1 * * * * /usr/bin/php -q /var/www/website/public/domain-manager/cron.php cron=do&d=31 >/dev/nul

雖然這不起作用並且我沒有收到任何電子郵件或錯誤?

  1. 如何保護此文件cron.php以使其無法從瀏覽器執行?儘管對於單個文件而不是目錄,但可能類似於此答案。

呼叫 PHP 腳本的方式,尤其是處理給定參數的方式略有不同。該文件是關於 HTTP GET 請求的,您正在執行 PHP 腳本的命令行呼叫。

通過命令行執行的 HTTP GET 請求範例:

wget -q -O  - "http://localhost/domain-manager/cron.php?cron=do&d=31"

通過命令行執行 PHP 腳本的範例:

php -f /var/www/website/public/domain-manager/cron.php cron=do d=31

主要區別在於 PHP 如何獲取參數。對於 HTTP 請求,PHP 將使用 Apache 或您正在使用的任何 Web 伺服器的介面,並在 $ _GET array. For the command line call PHP must use the $ argv 數組。

如果文件需要 HTTP 呼叫,我會使用它,即使命令行呼叫出於性能原因會更好並且沒有此類限制。

對您的 crontab 的建議:

*/2 * * * * wget -q -O  - "http://localhost/domain-manager/cron.php?cron=do&d=31" > /dev/null 2>&1

保護此文件免受外部請求的建議:/var/www/website/public/domain-manager/.htaccess 的內容(在同一目錄中)

<files cron.php>
order deny,allow
deny from all
allow from localhost
</files>

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