localhost és 127.0.0.1 különbség PHP7 / MySql alatt

Tud valaki valamit arról, PHP 7 alatt mi a különbség a localhost és a 127.0.0.1 host között MySql kapcsolat létrehozásánál?
A joomla konfigjában ha a host="localhost", akkor nem képes kapcsolódni a mysql szerverhez, de ha a host="127.0.0.1", akkor gond nélkül felcsatlakozik. Ugyanez a joomla 5.6-os PHP-val problémamentesen használja a host="localhost" konfigurációt, tehát PHP specifikusnak tűnik a dolog.
Rémlik, hogy tán a mysql a host-tól függően tcp vagy socket kapcsolatot hoz létre, de így sem értem, miért függhet ez a PHP verziójától. (Mind az 5.6, mind a 7.1 cgi módban futtatott, helyben fordított php.)

Hozzászólások

Egy biztos: a MySQL-nél a "localhost" általában helyi socket fájlos kapcsolódást jelent, arról fogalmam sincs hogy esetleg némely PHP verzió (de inkább beállítás lesz) miért viselkedhet másként...

Ez nem csak php 7 alatt van hanem altalaban php-nal, es jol emlekszel, 127.0.0.1 eseten TCP portra fog probalkozni kapcsolodni, mig localhost-nal socketre.

Csak egy sanda gyanúm van, elképzelhető, hogy hülyeség.
Lehetséges, hogy a "localhost" a ::1 IPv6 címre oldódik fel, a MySQL viszont 127.0.0.1 IPv4 címen hallgatózik, ezért nem sikerül csatlakoznia.

+1

Többször 0ptunk már mi is azzal, hogy főleg Win7 (de állítólag más OS is képes rá) egyes esetekben alapból IPv6-ra old fel, amit aztán az azt megkapó program vagy tud kezelni vagy nem (leginkább nem).

Persze ettől még a php-hez nem értek...

--
Debian 8.8 Jessie, Android 6.0.1 Marshmallow, OpenWrt 15.05.1 Chaos Calmer, Armbian 5.24, Free MC Boot 1.953+OPL 0.9.78-DB, Boyue C60 20140410 (Gentoo)

És itt szopok vele ma is... ismét, megint... pedig tegnap itt meséltem róla... noooooormáális???? Soha többet nem írom le hogy "localhost"
Egyébként mostanában változott ezzel kapcsolatban valami? Eddig csak Win7-en láttam olyat hogy a localhostot IPv6-on oldja fel, de mostanában több kolléga is panaszkodik, hogy náluk is megjelent a jelenség (Win7-Win10 vegyesen).

--
Debian 8.8 Jessie, Android 6.0.1 Marshmallow, OpenWrt 15.05.1 Chaos Calmer, Armbian 5.24, Free MC Boot 1.953+OPL 0.9.78-DB, Boyue C60 20140410 (Gentoo)

Ugyan olyan szoftver környezetnek kell lennie a fejlesztésben mint az ügyfélnél.

Na ezért nem lesz letiltva nálunk...

Vagy át kell állni ipv6ra

Hát ez nem kívánságműsor...

--
Debian 8.8 Jessie, Android 6.0.1 Marshmallow, OpenWrt 15.05.1 Chaos Calmer, Armbian 5.24, Free MC Boot 1.953+OPL 0.9.78-DB, Boyue C60 20140410 (Gentoo)

Ez nagyon jó ötlet, eszembe sem jutott, és illene is a PHP fejlődéséhez. De sajna a gépen tiltva van minden ipv6 eszköz és kezelés. Ennek ellenére, lehet, hogy a PHP7 ::1-re oldja fel, és akkor tényleg nem sikerülhet kapcsolódnia. Tesztelhető ez valahogy? Van joga a PHP-nek máshogy feloldania a localhost-ot, mint a rendszernek alatta?

Bár nem vagyok túl nagy PHP mágus, de megpróbálhatnád printelni a gethostbyname("localhost"); kimenetét.

Edit: hülyeséget írtam, ez mindenképp IPv4 címet fog visszaadni.

Valahogy ki kellene derítened, hogy a MySQL konnektorod hogyan oldja fel a hostnevet, vagy elkérni tőle, mire oldja fel.

Próbáld ki a mysql klienssel tudsz-e kapcsolódni:
mysql -u root -p
és
mysql -u root -p -h 127.0.0.1

még akkor is elpukkan, ha csak a portot definiálod és ragaszkodik a sockethez:
mysql -u root -p -P 3307 #(itt figyelmen kívül hagyja a portot és megy a socketre, porttól függetlenül, szívtam is már miatta párszor)
mysql -u root -p -h 127.0.0.1 -P 3307 # így működik ahogy elvárja az ember

Az ipv6-os feloldás lehet gond, bár még ilyesmivel nem találkoztam.

Nem joomlázok, de a PDO és mysqli kiterjesztések viselkedése szinte mindig ugyanazok, mint a normál paranccsoros mysql kliensé.

A gethostbyname azért nem jó, mert az a PHP mechanizmusaival oldja fel a dns-t, nem csak átdobja a PDO-nak / mysqli-nek ami végül előfordulhat hogy teljesen más módon fog kapcsolódni a saját libjeivel.

Debugra esetleg megpróbálhatsz összedobni egy egyszerű kapcsolódást, amivel elkapdosod / kidumpolod az Exceptionöket, hátha van benne valami használható információ:
http://php.net/manual/en/pdo.connections.php

Az okot hirtelen nem tudom, de php doksi kommentek kozott:

> I'd like to point out that in PHP 7.0 in the dsn parameter you can't use 'host=localhost' to solve this you can use 'host=127.0.0.1' instead.