2011-12-06 124 views
0

我最近將應用程序從一臺服務器遷移到另一臺(更新的)服務器。移動後,我的數據庫會話處理不再有效。當我嘗試登錄時,我收到以下錯誤:PHP數據庫會話處理忽略MySQL登錄憑證

PHP Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) w/ucr-dev/includes/DatabaseSessionHandler.class.php on line 44 

用戶WWW的數據是不是我指定的數據庫用戶,而不是數據庫的有效用戶。當我最初編寫這個應用程序時,我寫了一篇博客文章,詳細介紹了確切步驟和所需的所有代碼。該博客條目可在My Blog找到。

什麼想法?

+0

注意:您可能會考慮查看[PDO](http://php.net/pdo)或至少[MySQLi](http://php.net/mysqli)。 – Wiseguy

回答

0

當您調用mysql_real_escape_string()時,聽起來您的數據庫連接尚未打開。該功能需要打開數據庫連接才能工作。如果沒有指定,它將假定上一次打開的連接。如果沒有連接打開,它將隱含地調用mysql_connect()不帶參數。因此,它試圖連接網絡服務器的用戶www-data,並沒有密碼。

看起來您可能想要在MySQLDatabase::__construct()的內部調用$this->open(),以便在創建對象時打開連接。

+0

downvote的原因是什麼? – Wiseguy

+0

這似乎已修復它! –

+0

有人也低估了這個問題。 –