近日布署了一套PHP程序到LINUX服務器上,運行時提示這樣的錯誤:
Missing argument 3 for getfile(), called in /home/..../index.php。
程序已在本地或者其它服務器上是運行無錯的。不同的是服務器操作系統,運行無錯的是WINDOWS 2003。而出錯提示的則是linux+apache的服務器。
錯誤分析:
那很明顯的是程序不兼容的問題造成的。具體的錯誤在於PHP程序中自定義函數getfile()上,定義的是有三個預設值,如:
funtion getfile($a,$b,$c){
}
但在程序調該自定函數的時候,只填寫了兩年預設值,getfile($a,$b)。在windows服務器上是無錯誤提示,但linux服務器容差性就差些,提示了Missing argument 3的錯誤。
解決方法:
如果修改程序工作量大,則轉而使用萬能的windows服務器吧,或者改一下程序一勞永逸,例如調用時,即使無第三個參數,也給填上。
windows服務器運行PHP程序與LINUX的運行確實有差別,以前也有遇到過不少。為了避免此類問題,開發PHP程序理想情況下還是在LINUX系統作為測試環境。