mysql_connect z PHP 5.3.6 nie umie ::1
Usługi na moim lapku stanardowo binduję na ::1. Niestety, PHP 5.3.6 (i wcześniejsze wersje zapewne też) nie jest na to gotowe :(
$ cat ./x.php
<?php
mysql_connect('::1', 'mysql', 'TAJNE_HASŁO')
or die('Nie można się połaczyć: ' . mysql_error());
?>
Teraz spróbujemy zainicjować połączenie.
$ php -f ./x.php
PHP Warning: mysql_connect(): Can't connect to local MySQL server through socket '1' (2) in /home/users/wojtosz/x.php on line 2
Warning: mysql_connect(): Can't connect to local MySQL server through socket '1' (2) in /home/users/wojtosz/x.php on line 2
Nie można się połaczyć: Can't connect to local MySQL server through socket '1' (2)
Połączenie bezpośrednio do MySQL na ::1 przechodzi bez problemu:
$ mysql -u mysql -p -h ::1
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.5.13-log PLD/Linux Distribution MySQL RPM
[...]
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.13, for Linux (x86_64) using readline 6.2
Connection id: 17
Current user: mysql@localhost
SSL: Not in use
Server version: 5.5.13-log PLD/Linux Distribution MySQL RPM
Protocol version: 10
Connection: ::1 via TCP/IP
[...]
Wyciąłem […] zbędne rzeczy. Jak widać, niewielu jest takich, którzy IPv6 używają na codzień, a szkoda :(
Zgłoszone jako: https://bugs.php.net/bug.php?id=55489
Niestety, wczorajszy release PHP 5.3.8 również nie radzi sobie z problemem :-/