最近我碰到了一個問題:我需要觸發(fā)一個php腳本來定時給我發(fā)郵件。可是,這個腳本是另一個腳本的一部份,用到了很多includes命令,同時也有很多庫文件使用了includes命令。
一般情況下,觸發(fā)一個php腳本無話可說,你需要做的便是在服務(wù)器上設(shè)置一個如下的crontab
/bin/local/php/path/to/your/php/script.php
這就是了,無論你是否愿意,script.php這個腳本文件將由crontab自動運行
可是,問題就來了:當(dāng)bash運行一個cron的時候,不會通過Apache,當(dāng)然了,還有它的參數(shù),include_paths等等。所以呢,php將會在/bin/local/php目錄下找文件,當(dāng)然找不到。
所以,遇見這種情況,按照下面的方法做:
在終端上輸入如下命令得到sh和lynx程序的路徑:
whereissh
whereislynx
or
whichsh
whichlynx
隨便輸入一個,其中便會返回你要的路徑。如果你的系統(tǒng)里沒有l(wèi)ynx,試試links,w3m,或者links2,這些是其它的文本模型瀏覽器。這些瀏覽器將會運行你的腳本。
然后你需要創(chuàng)建一個sh文件,用它來調(diào)用php文件,通過lynx。假設(shè)你的服務(wù)器已經(jīng)安裝了lynx,sh路徑為/bin/sh,lynx路徑為/usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx-sourcehttp://www.yoursite.com/folder/script.php
注意感嘆號
把這個腳本保存為cron-lynx.sh
保存到一個你找得到的地方,比如:
/usr/www/yourdirectory/sh_scripts/
我個人比較喜歡放在網(wǎng)站根目錄。
然后再創(chuàng)建一個script.php的文件。當(dāng)cron運行的時候,將會通過lynx來調(diào)用它。這個文件可以通過瀏覽器來訪問。我的這個很簡單:
//I'massumingyou'vealreadysetyourincludepath
include('includes/stuff/another_script.inc');
another_program();
?>
然后我編輯主機的crontab,像下面這樣。
/bin/sh/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh和/usr間有空格。就這樣就設(shè)好了,還有一點要注意的是,你的sh文件和php文件都正確無誤。 本文出自:億恩科技【www.yaz797.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|