我在MySQL 5.5.36上運行Windows Server 2008 R2上的PHP 5.5.7 64位nts上的Moodle。PHP(5.5.7)警告連接到Windows Server 2008 R2中的MySQLi
直到兩天前,沒有問題。爲了處理Xdebugger這樣一個內存管理器,一個額外的CPU和更多的內存被分配給虛擬機。 Windows許可證也被激活。整個虛擬機已重新啓動。 (在此之前,我已經重新啓動了機器,沒有問題)。
我現在收到以下警告,當我訪問該網站的任何頁面:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
in C:\inetpub\wwwroot\moodle\lib\dml\mysqli_native_moodle_database.php on line 375
我創建了一個測試PHP頁面,簡單地包括以下:
$mysqli = new mysqli("127.0.0.1", "moodleuser", 'xxxx', "moodle", 3306);
if ($result = $mysqli->query("SELECT * from mdl_user limit 10")) {
echo "Select returned $result->num_rows";
} else {
echo "Error";
}
$mysqli->close();
我收到以下輸出:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.in C:\inetpub\wwwroot\moodle\info.php on line 17
PHP Warning: mysqli::query(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 18
PHP Warning: mysqli::close(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 24
我檢查了「127.0.0.1 localhost」存在於我的主機上s文件,並且IPv6「:: 1」行已被註釋掉。 我也試圖使用「本地主機」,但同樣的問題。
奇怪的是,如果我刷新頁面,偶爾和完全隨機,警告不會發生,並給出正確的輸出。
我試圖禁用警告,但php似乎無視我。另外,禁用警告並不完全理想。
任何想法?
編輯:
這麼多的痛苦跑馬圈地回來的Forth PHP和MySQL和IIS之間後,它看起來像(再次)這是php.ini的罪魁禍首。老實說,我甚至不能告訴你哪個設置是問題 - 但我把php.ini中的所有可能的超時相關設置更改爲大數(10000或-1取決於設置),以及mysql中的connection_timeout在my.ini中。
我還沒弄清楚哪一個導致了這個問題,但是如果我曾經這樣做過,我會編輯這篇文章。