Szenario:
Es wird ein Webserver mit jeweils neustem Apache, MySQL und PHP benötigt. Distribution Debian Etch. Zyniker sagen: "Falsche Distribution gewählt". Dem ist nichts hinzuzufügen.
mysql-5.0.51a-linux-i686-icc-glibc23.tar.gz ist installiert nach /usr/local/mysql. MySQL läuft.
Nun wurde PHP gegen die Files unter /usr/local/mysql/include kompiliert. Die configure Zeilen sahen so aus:
'--with-mysql=/usr/local/mysql' \
'--with-pdo_mysql=/usr/local/mysql' \
Nachdem ich fertig war spuckte sowohl der Apache als auch "make test" Fehler aus:
Beim Starten von Apache:
Syntax error on line 417 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: symbol floor, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference
Bei "make test":
/usr/src/php-5.2.6/sapi/cli/php: relocation error: /usr/src/php-5.2.6/sapi/cli/php: symbol isinf, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference
Als Workaround habe ich libmysqlclient15-dev
installiert und gegen die Debian Libs kompiliert:
'--with-mysql=/usr' \
'--with-pdo_mysql=/usr' \
Resultat: Keine Fehler mehr
Wer weiß woher der Fehler kommt, darf sich gerne melden. Auf jedenfall war das eine Version früher (sowohl MySQL als auch PHP) nicht der Fall.
Seit Ewigkeiten gibts diesen Ärger bei der Erkennung der richtigen Mysql-Umgebung, wenn auf der Maschine mehrere Versionen von Mysql sind - z.B. eine eigene tgz-Version und die Debian-Pakete. Das php-configure gaukelt vor, man könne selbst den Pfad mitgeben, tatsächlich wird aber die Systemkonfiguration ermittelt und verwendet.
Ergo: /etc/ld.so.conf und Konsorten anpassen und ldconfig ( ggf. mit -v, zum Zuschauen) aufrufen, dann klappts auch mit dem richtigen mysqlclient in php.