2012-04-10 76 views
15

我有一個使用cron作業每天在php頁面上運行的電子郵件時間表。當我使用鏈接運行頁面時,php代碼正常工作。如何使用cron作業運行php文件

現在,當我使用cron作業運行php腳本時,它也可以正常工作,但是當我放置一些查詢時,cron作業將無法理解鏈接。

例如:http://www.wetube.org/cron.php?id=01001所以現在如果我嘗試使用cron作業每天運行它不起作用。

但是,如果我們只是擦除查詢它工作正常。你們知道任何使這個鏈接在cron工作中工作的代碼嗎?

+0

「放一些查詢」是什麼意思?另外,你作爲cron-job的命令是什麼? – 2012-04-10 23:02:41

回答

36

Cron運行命令,因爲它們將通過shell運行,所以運行PHP將使用本地路徑。

您需要使用如下命令:

php /home/USER/public_html/cron.php

或者,如果包括查詢字符串是必要的,使用捲曲,而不是(如果它安裝):

curl http://www.wetube.org/cron.php?id=01001

你可能希望不要將你的cron腳本暴露給互聯網 - 將它們移到你的web目錄之外,因爲如果有人發現它,他們可以不斷地將它重新加載到垃圾你的cron腳本(即發送l電子郵件OTS)

+0

謝謝你 但是我可以添加什麼來防止發送報告 – 2012-04-10 23:23:24

+4

如果你必須通過HTTP運行腳本(這通常是一個壞主意),而你的服務器有一個靜態(和專用)IP地址,你可以通過將您的cron腳本包含在條件檢查中,$ _SERVER ['REMOTE_HOST']'匹配您的服務器的IP地址,從而限制訪問來自您的服務器。這並不是萬無一失的,但最簡單的方法是在web目錄之外簡單地安裝cron腳本。 – wyqydsyq 2012-04-11 00:00:27

7

我想補充像

curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23 

和PHP文件

if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){ 
.... 
stuff to do 
.... 
} 

哈希*您甚至可以添加特定的時間/日期檢查時,應當運行。
*你可以檢查IP
*生成sha512(我會推薦)在同一鹽和甚至時間的cron和php文件中哈希,然後檢查它們是否相同 - 黑客不可能重新創建它 - 除非他以某種方式得到你原來的哈希設置