我有一些頁面,可以在本地正常工作(在php.ini中使用WAMP和error_reporting E_ALL),但是一旦我上傳它們,就會出現以下錯誤: 致命錯誤:調用未定義的方法DB :: exists() 該方法在那裏,我不知道爲什麼它不能被看到。PHP致命錯誤:在網絡上傳後調用未定義的方法
你知道哪裏出了問題嗎?
我有一些頁面,可以在本地正常工作(在php.ini中使用WAMP和error_reporting E_ALL),但是一旦我上傳它們,就會出現以下錯誤: 致命錯誤:調用未定義的方法DB :: exists() 該方法在那裏,我不知道爲什麼它不能被看到。PHP致命錯誤:在網絡上傳後調用未定義的方法
你知道哪裏出了問題嗎?
你可能在你的網站代碼以外的地方安裝了梨和一些庫。 檢查您在php.ini
中包含的點並上傳。
您可能希望檢查網絡服務器的php.ini
配置與您的本地php.ini
,以查看是否有任何模塊未加載到您的PHP應用程序可能需要的網絡服務器上。
此外,請檢查您的網絡服務器和本地PHP上的PHP版本號,以及檢查Web版本的PHP版本限制。
嘗試把調試語句到定義class DB
和DB::exists()
文件,如:
echo "DB file was included\n";
這是否消息?如果沒有,那麼該文件沒有被包括在內,這解釋了爲什麼找不到該方法。
查找文件所在是應該得到包括位置,並檢查包括在點路徑:
echo "Include path is: " . get_include_path() . "\n";
是否與其他文件具有相同的名稱中列出的其他目錄中存在包含路徑?如果是這樣,您可能需要更改包含路徑中的其他條目(在php.ini中定義爲include_path
,但也可以在運行時用set_include_path()
編輯)
服務器安裝了Pear :: DB (http://pear.php.net/package/DB/redirected)。您的自動加載功能正在加載Pear的DB類,而不是您的。
如果你有對服務器的控制,這樣的事情應該工作
$ sudo pear uninstall DB
如果你沒有對服務器的控制,你需要你的數據庫類重命名爲別的東西......
您可以修改include_path以在您自己的類之後加載PEAR類,但這可能會導致其他命名衝突。
很有可能是服務器上沒有安裝庫或擴展。請顯示一些代碼,如果可能的話,調用'phpinfo()'的PHP版本號可以在服務器和本地提供。 – 2010-03-06 23:11:22
本地與服務器= PHP 5.3.0與PHP 5.2.5。所有類(包括數據庫)都通過__autoload()加載並作爲每個頁面中的組件加載。我試圖用所有類的單個require_once語句替換__autoload,但這並沒有解決問題。 DB :: exists()是從另一個類(Visitor)靜態調用的。 – user287966 2010-03-07 12:27:48