![](/img/trans.png)
[英]mysqli_connect() mysqli_connect(): (HY000/2002): No such file or directory error when calling from other php file
[英]Intermittent error connecting to my localhost MySQL instance from PHP: mysqli_connect(): HY000/2013
我有一個LAMP網站(PHP / MySQL),我非常依賴我的MySQL數據庫。
最近,間歇性地發生以下錯誤:
[30-Oct-2011 16:11:49] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029
這是第1029行,偶爾會給出上述錯誤的具體行:
$db = mysqli_connect($cfg['db_location'], $cfg['db_reader_username'], $cfg['db_reader_password']);
其中$cfg['db_location']
是"localhost"
,用戶名和密碼是正確的。
似乎某些東西導致我的PHP腳本間歇性地失去與MySQL服務器的連接,這讓我感到困惑,因為我的所有 MySQL連接都是針對localhost的。 也就是說,PHP腳本和MySQL服務器都在同一個盒子上運行,我通過localhost連接到MySQL。
此外,這是令人費解的,因為我的PHP腳本能夠成功連接到MySQL服務器,可能有90%的頁面。
我可以說,我的服務器有足夠的RAM和CPU:
top - 16:38:23 up 173 days, 19:19, 2 users, load average: 0.57, 0.78, 0.84
Tasks: 142 total, 4 running, 137 sleeping, 0 stopped, 1 zombie
Cpu(s): 18.7%us, 27.5%sy, 0.7%ni, 52.6%id, 0.2%wa, 0.1%hi, 0.2%si, 0.0%st
Mem: 2976260k total, 1861368k used, 1114892k free, 532628k buffers
Swap: 2048248k total, 116k used, 2048132k free, 1035804k cached
並且有足夠的可用磁盤空間。 當我運行df -h
,我的所有文件系統最多使用25%。
所以我不知道什么會導致我在PHP錯誤日志中看到的零星錯誤。
有什么想法可能導致我的PHP腳本間歇性地失去與localhost上的MySQL服務器的連接?
我升級到MySQL 5.1,這是我運行mysql -V
時得到的:
mysql Ver 14.14 Distrib 5.1.56, for pc-linux-gnu (i686) using readline 5.1
但是仍然會發生同樣的錯誤:
[30-Oct-2011 20:26:18] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029
和以前一樣,錯誤仍然是間歇性的。
升級到MySQL 5.1后,我一直在仔細查看我的PHP錯誤日志。 我注意到其他一些與第一個類似的錯誤。 例如,這是一個這樣的錯誤:
[30-Oct-2011 22:42:29] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'reading authorization packet', system error: 104 in /home/path/to/my/code.php on line 1029
這是我在日志中看到的另一個錯誤:
PHP Warning: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/path/to/different/code.php on line 7
在所有情況下,問題從根本上似乎是連接到MySQL失敗。 什么可能導致這個或我如何調試它的想法?
也許這個錯誤報告會有所幫助 - 似乎修復可能是為全局connect_timeout設置更高的超時。 它在MySQL 5.1的后續版本中設置為更高的值(10秒),而早期版本則為5秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.