Tym razem krótko i banalnie, ale może komuś się przyda.
Kilka dni temu po ręcznej instalacji PHP 5.3.2 na jednej z maszyn z Debianem i podpięciu aplikacji opartej o Zend Framework jedyne co było widać to strona błędu z wpisem w logach serwisu:
1 |
SQLSTATE[HY000] [2002] Invalid argument |
Super, konkretny komunikat :/ A jakże, nie ma jak PHP 😉 Na początku pomyślałem, że to może wina wersji (aktualizacja php 5.2 -> 5.3) – nie, to nie było to.
Rozwiązanie okazało się banalne. Wspomniany błąd generuje PDO, a jest wynikiem błędnie określonej lokalizacji socketu MySQL przez PHP podczas kompilacji (często PHP uważa, że to /tmp/mysql.sock – ?).
Wystarczy dodać w naszym php.ini informację o lokalizacji:
1 2 |
; najpierw sprawdź, gdzie jest Twój mysql.sock pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock |
Może i bezpośrednio Zend Frameworka nie dotyczy, lecz PHP+PDO. Ale jeśli już da się złapać taki wyjątek, to Zend Framework powinien go zamienić na coś konkretnego.