mysql_connect()“No such file or directory”錯誤排除,mysqlconnect
在部署LogAnalyzer時碰到一個mysql_connect()的錯誤,其實就是php拋出的錯誤!
mysql_connect()函數:http://www.w3school.com.cn/php/func_mysql_connect.asp
主機環境:PHP5.6.1,Nginx1.4.7,Mysql5.5.40
此時的情況是,查詢日誌時間就會拋出這個錯誤,而其他模組,比如添加刪除使用者等,沒有受影響,
執行SQL語句select DeviceReportedTime,FromHost,Message from Syslog.SystemEvents,可以得到正常資料。
那問題基本就是出在了php調用Mysql上了。。。。。。。
開始排錯:
1.尋找LogAnalyzer中用到mysql_connect()函數的地方:
http://phpcrossref.com/xref/loganalyzer/_functions/mysql_connect.html
共計4處
2.尋找LogAnalyzer的config.php中的配置
發現有一處表的名字錯了,修改為系統正確的即可,此處只是修改了系統設定檔;
進入資料庫,修改Syslog資料庫下的表logcon_sources的欄位DBTableName為正確值;
3.檢驗mysql_connect()函數是否正確
(1).建立一個test.php
<span style="font-size:14px;"><?php$con = mysql_connect("localhost","syslog","123456");if (!$con) { die('Could not connect: ' . mysql_error()); }// 一些代碼...mysql_close($con);?></span>使用http://localhost:9189/test.php,訪問只掉跳出“Could not。。。。。”
2.上一步把問題都確認了,Mysql我也知道UNIX socket的位置
直接進入/etc/php.ini下修改這3個和Mysql相關的套結函數指定位置
<span style="font-size:14px;">mysql.default_socket =/mnt/mydata/mysql.sockmysqli.default_socket =/mnt/mydata/mysql.sockpdo_mysql.default_socket=/mnt/mydata/mysql.sock</span>
之後重啟php-fpm問題解決
總結一下:
1.網上抄襲回來的代碼要細細驗證,即使是開源的;
2.出了錯,不要到處問人,應該講程式全部調至debug模式,逐步排除!