PHP 使用的 `mysql.default_socket` (或 `mysqli.default_socket`/`pdo_mysql.default_socket`) **與 MySQL 實際 socket 文件路徑不一致**。
mysql> SHOW VARIABLES LIKE 'socket';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /home/mysql/data/mysql.sock |
+---------------+-----------------------------+
; 找到以下三項 (視使用擴展而定),全部設置為真實路徑
mysql.default_socket = /home/mysql/data/mysql.sock
mysqli.default_socket = /home/mysql/data/mysql.sock
pdo_mysql.default_socket = /home/mysql/data/mysql.sock
💡 若使用 `php-fpm`,**必須重啟 php-fpm** 生效:
`systemctl restart php-fpm` 或 `service php7.4-fpm restart`
connect_errno) {
echo "失敗: " . $mysqli->connect_error;
} else {
echo "成功! Socket: " . $mysqli->socket;
}
// PHP 代碼中
$pdo = new PDO("mysql:host=127.0.0.1;port=3306;dbname=test", "user", "pass");
// 或
$mysqli = new mysqli("127.0.0.1", "user", "pass", "db", 3306);
**優點**:無需改 php.ini,跨機器部署無縫遷移。
**缺點**:本機回環比 Unix Socket 略慢 (微秒級),高併發極致優化時才感知。