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