Den halben Tag habe ich heute damit verbracht, php5 und pdo_mysql unter Mac OS X zum Laufen zu bringen. Hier eine kleine Anleitung:
1) PHP Quellen herunterladen und entpacken.
2) Im Terminal in das entpackte PHP 5.2.6 Verzeichnis wechseln und den Ordner 'ext/pdo_mysql'. Bei mir war das '/Users/thobach/Downloads/php-5.2.6/ext/pdo'.
3) Im Terminal ausführen: 'phpize', './configure --prefix=/usr --with-pdo-mysql=/usr/local/mysql', 'make', 'sudo make install'. Der letzte Befehl sollte die 'pdo_mysql.so' im Ordner '/usr/lib/php/extensions/no-debug-non-zts-20060613' ablegen.
5) In der /etc/php.ini muss man dann diese Extension und den Ordner eintragen: 'extension=pdo_mysql.so' und 'extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"'
6) Apache neu starten mit 'sudo apachectl restart'.
Die Anleitung ist leider nicht ausführlich und getestet. Ich hoffe sie hilft etwas weiter.
Sonntag, 2. November 2008
Abonnieren
Kommentare zum Post (Atom)
Drucken

Hallo,
AntwortenLöschenich habe inzwischen mehreres probiert pdo_mysql ans laufen zu bekommen. Habe es auch nach deiner kurzen Anleitung gemacht. Lief fehlerfrei durch, aber wird weder in der php_info angezeigt, noch in den loaded extensions von php angezeigt. Hast du noch eine Idee, wo ich nach schauen kann, wieso das nicht funktioniert?
Nutze den vom Mac OSX mitgelieferten apache und php-version (5.2.6). In der php.ini ist die extension aktiviert, extension_dir zeigt auf das richtige verzeichnis, extension wurde generiert. Apache schon neugestartet, Mac auch schon neugestartet. Ich bin ein wenig überfragt.
Meldung 'PDOException: could not find driver ...'
Grüße
Hallo Anonym,
AntwortenLöschenich hatte mich vertippt im Schritt 3, es musste pdo_mysql.so statt pdo_mysql.po heißen.
Hier noch ein paar Hilfestellungen:
Heißt die extionsion in der php.ini auch 'pdo_mysql.so' oder noch 'pdo_mysql.dll'?
Gibt es startup-Fehler beim Laden von PHP?
Hast du einen Intel-Mac oder PowerPC-Mac? Bei mir läuft es auf Intel-Mac mit Mac OSX 10.5.6
Liebe Grüße,
Thomas
Noch eine Idee: Liegt MYSQL in /usr/local/mysql?
AntwortenLöschenLieber Thomas,
AntwortenLöschenich wollte mich ganz kurz bei dir für dien wunderbares Tutorial bedanken! Heute habe ich auch fast den ganzen Tag verbracht, um pdo_mysql zu konfigurieren. Dein Tutorial ist im Netz das Beste!
Schöne Grüße,
Andrey
Grüß dich Thomas,
AntwortenLöschendanke für deine Anleitung. Leider erhalte ich ebenfalls die Fehlermeldung:
could not find driver
Allerdings ... wenn ich eben im Webbrowser (Firefox 3.5) ein Testscript laufen lasse, das eine Datenbankverbindung herstellen soll und testhalber Datensätze aus einer Tabelle auslesen soll.
Aber ... :-) in der shell funktionierts. Die Verbindung zum MySQL-Server wird hergestellt und die gewünschten Datensätze gelesen.
Das Modul wird angezeigt:
...
PDO
pdo_mysql
pdo_sqlite
...
Mit phpinfo() wird auch kein PDO-MySQL-Driver angezeigt.
Hm, hast du eine Idee, warum das Modul "webseitig" nicht geladen wird?
Meine Konfiguration:
Mac OS X 10.5.7
PHP 5.2.8 (cli)
PHP Version 5.2.8 ( laut phpinfo() )
Apache 2.2.11
Als Source für deine Anleitung habe ich php-5.2.8.tar.bz2 verwendet.
schöne Grüße,
Willi
@Willi: hast du evtl. mehrere MySQL-Installationen parallel laufen?
AntwortenLöschenHallo Thomas,
AntwortenLöschenich weiß jetzt nicht, ob meine Antwort auf deine rasche Rückmeldung angekommen ist, deshalb noch einmal :-)
nein, ich habe nur einen MySQL-Server laufen - die Standard-Installtion, die der MySQL-Installer anlegt.
mysql -> mysql-5.1.34-osx10.5-x86 in /usr/local
ich habe die beiden Einträge 'extension=pdo_mysql.so' und 'extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"' auch noch in die php.ini.default geschrieben (Leopard verwendet ja diese, soweit ich weiß).
Ich habe aber auch eine Fehlermeldung in der /var/log/apache/error_log Datei:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so' - (null) in Unknown on line 0
Der Pfad stimmt, wie ich mich per ls -l überzeugen kann.
Damit ist aber klar, dass die lib nicht geladen wird. Die Frage ist nur warum? :-)
danke für deine rasche Reaktion, ich möchte dich aber nicht all zu sehr mit dem Problem bemühen. Es wird eine Lösung dafür geben :-)
schöne Grüße,
Willi