"Jedno narzędzie do wszystkiego, jest do niczego."

Instalacja sterownika MySQLnd w PHP – lepsza komunikacja za bazą

W ostatnim wpisie (Typy w PHP i MySQL…) kilka przykładów odnośnie pobieranych danych z bazy i ich typów oraz podałem sposób na rozwiązanie problemu zwracanych typów.

Tutaj natomiast chcę przedstawić Ci co musimy zrobić, by podłączyć nasz sterownik.

 

Słów kilka o sterowniku MySQLnd

Różnica między sterownikiem MySQL a MySQLnd jest taka, że ten pierwszy do komunikacji z bazą danych używa zwykłego ciągu znaków. Natomiast sterownik MySQLnd do komunikacji używa formy binarnej, przez co w łatwy sposób zachowamy typy, a dodatkowo wykonywanie niektórych operacji na bazie danych może być szybsze i przy wsparciu SSL bezpieczniejsze.

MySQLnd jest natywnym sterownikiem w PHP, a sam język wspiera go już od wersji 5.3/5.4. Czy oznacza to że już go mamy zainstalowanego? – nie do końca.

Jak wynika z dokumentacji, PHP wspiera ten sterownik. Natomiast niekoniecznie będzie on skompilowany i zainstalowany na naszym serwerze. Sam zetknąłem się z tym problemem na jednej z maszyn, gdzie zainstalowana wersja PHP to 5.6, a mimo tego sterownik ten nie był zainstalowany i obsługa bazy leciała przez libmysql.

Jeżeli testowaliśmy kod we wcześniejszym wpisie, a jego wykonanie nie powiodło się – oznacza to że sterownik nie jest zainstalowany.

 

Instalacja sterownika MySQLnd

Gdy chcemy mieć pewność poprawnego zainstalowania sterownika, powinniśmy sobie skompilować naszego PHP.

Po pobraniu źródeł odpowiedniej wersji 5.3+ (najlepiej 7+), przy kompilacji musimy zaznaczyć taką konfigurację:

./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd   (..Reszta opcji konfiguracji kompilacji PHP..)

Następnym krokiem jest kompilacja i instalacja:

// Kompilacja
make

// Instalcja
make install

Teraz możemy sprawdzić czy nowo zainstalowany PHP w pliku konfiguracyjnym php.ini posiada podłączone biblioteki:

extension="mysql.so"
extension="mysqli.so"
extension="pdo_mysql.so"

Dodatkowo powinniśmy zainstalować lub zaktualizować bibliotekę mysqlnd:

//Usunięcie libmysql ze wszystkich wersji
apt-get remove php-mysql php5-mysql

//A następnie dla php 5
apt-get install php5-mysqlnd
// LUB dla php 7 (w zależności od żródeł)
apt-get install php-mysqlnd


//Restart Apache2
service apache2 restart
// lub 
/etc/init.d/apache2 restart

Od tego momentu PHP powinien działać przy współpracy sterownika MySQLnd.

 

A co z Windows?

Tutaj do końca nie mogę się wypowiedzieć, ponieważ nie używam PHP Windows na produkcji. Natomiast na testach w środowisku dev, czysta instalacja z gotowych źródeł (np. XAMPP) wspiera już MySQLnd w wersji 5.6+ jak i 7+. Z dokumentacji PHP wynika też że od wersji 5.3 w Windows sterownik ten jest wbudowany jako podstawowy, więc powinno wszystko działać poprawnie.

 

 

Jeżeli artykuł Ci się przydał pozostaw komentarz i podziel się nim z innymi 😉

Dziękuję i pozdrawiam ! 

 

 

Share This: