最近做一個電子報排程的程式,原本是在 PHP 5 上開發,後來轉到安裝 PHP 4 的正式機上時發生了一些問題。以下是我的記錄:
file_put_contents 函式
我使用 file_put_contents 函式去寫一個暫存檔,在測試機上時一切正常,但是換到正式機上時就一直無法寫入。結果原因是豬頭的我在查閱 PHP 手冊時,沒注意到 file_put_contents 是 PHP 5 才有的函式。解決的辦法很簡單,利用 PEAR 的 PHP_Compat 類別就能解決:
1 2 3 4 5 6 | |
別名參數
另外一個問題要看以下的函式:
1
| |
在 PHP 5 底下,上面這段程式是 OK 的;不過一換到 PHP 4 馬上就出問題了。這是因為 PHP 5 可以接受對一個別名參數 (&) 設定預設值,但 PHP 4 不行。
不過如果改成這樣:
1 2 | |
這樣肯定也會掛點,因為不能直接把 NULL 丟給別名參數。要改成這樣:
1 2 3 | |
路徑問題
我用 Linux 的排程去執行 PHP 程式時, require_once 會發生找不到引入檔,但是 PEAR 等第三方類別庫卻可以載入的問題。雖然我在 Windows 的測試環境下是可以的,但 Linux 總是無法正常動作。
require_once ('class/MyClass.php');
不過還是有解決的方法,那就是強迫 require_once 從目前程式所在路徑去尋找要引入的檔案。利用 dirname(__FILE__) 就能達到這個目的:
1
| |
如果很龜毛的話,也可以這樣寫:
1 2 | |
這樣就能保證被排程的 PHP 程式能引入正確的檔案了。