歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

linux系統下cron運行php程序

最近我碰到了一個問題:我需要觸發一個php腳本來定時給我發郵件。可是,這個腳本是另一個腳本的一部份,用到了很多includes命令,同時也有很多庫文件使用了includes命令。


    一般情況下,觸發一個php腳本無話可說,你需要做的便是在服務器上設置一個如下的crontab
    /bin/local/php /path/to/your/php/script.php
    這就是了,無論你是否願意,script.php這個腳本文件將由crontab自動運行
    可是,問題就來了:當bash運行一個cron的時候,不會通過Apache,當然了,還有它的參數,include_paths等等。所以呢,php將會在/bin/local/php目錄下找文件,當然找不到。
    所以,遇見這種情況,按照下面的方法做:
    在終端上輸入如下命令得到sh 和 lynx 程序的路徑:
    whereis sh
    whereis lynx
    or
    which sh
    which lynx
    隨便輸入一個,其中便會返回你要的路徑。如果你的系統裡沒有lynx,試試links,w3m,或者 links2,這些是其它的文本模型浏覽器。這些浏覽器將會運行你的腳本。
    然後你需要創建一個sh文件,用它來調用php文件,通過lynx。假設你的服務器已經安裝了lynx,sh路徑為 /bin/sh,lynx路徑為 /usr/local/bin/lynx
    #!/bin/sh

    /usr/local/bin/lynx -source http://www.yoursite.com/folder/script.php
    注意感歎號
    把這個腳本保存為cron-lynx.sh
    保存到一個你找得到的地方,比如:
    /usr/www/yourdirectory/sh_scripts/
    我個人比較喜歡放在網站根目錄。
    然後再創建一個script.php的文件。當cron運行的時候,將會通過lynx來調用它。這個文件可以通過浏覽器來訪問。我的這個很簡單:
    // I'm assuming you've already set your include path
    include( 'includes/stuff/another_script.inc' );
    another_program();
    ?>
    然後我編輯主機的crontab,像下面這樣。
    /bin/sh /usr/www/yourdirectory/sh_scripts/cron-lynx.sh
    在/bin/sh 和 /usr 間有空格。就這樣就設好了,還有一點要注意的是,你的sh文件和php文件都正確無誤

Copyright © Linux教程網 All Rights Reserved