2011-10-24 76 views
0

我有一個cron作業,在全時段(00)每天運行多次。我怎麼才能讓PHP腳本在這段時間內運行?我不想讓其他人能夠運行我的腳本。這是我想到的:我如何只允許cron在特定時間內在PHP文件上運行

if (date('i', time()) > 2 || date('i', time()) < 58) { 
    die; 
} 

有沒有更好,更安全的方法?

+1

「別人」?喜歡誰?如果您的腳本只能由cron運行,那麼它不應該從Web訪問(如下面的@jeroen所述),這樣可以消除任何無法直接訪問您的服務器的人。這隻會讓那些直接訪問您的服務器的人,您應該知道並信任的人(或者他們不應直接訪問您的服務器)。 –

+0

如果其他人可以運行腳本,他們可以閱讀腳本。這意味着他們可以複製它,刪除您的時間限制,並反正運行它。 –

回答

4

如果你把你的PHP腳本放在你的web目錄之外,那麼只有你/ cron能夠運行它而沒有其他人。

有不同的方式從cron運行PHP腳本,例如像添加這樣的事情作爲你的PHP腳本的第一行:

#!/usr/local/bin/php  /* depends on your server and configuration */ 
+0

爲什麼你認爲腳本是在一個網絡訪問的位置開始?這如何防止其他正在訪問shell中的服務器的用戶運行腳本? – ghbarratt

+0

@ghbarratt只是猜測,但它似乎是合乎邏輯的,否則OP可以將其移動到他或她的主目錄,問題就已經解決了。 – jeroen

0

的cron作業通常作爲root用戶運行。你可以使你的腳本可讀和可執行僅根:

sudo chown root script_for_root_only.php 
sudo chmod 744 script_for_root_only.php 

您也可以在crontab改變命令來運行該腳本作爲一個特殊的用戶,如果你不想使用root ..

我認爲我們可以假設您沒有可訪問網頁的腳本。如果你確實移動了它。

相關問題