XDebug unter OS X

Anleitungen, Beispiele und Hilfestellungen zu PHP

Moderator: wegus

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

XDebug unter OS X

Beitragvon wegus » 08.08.2009, 12:25

Eine xdebug.so für OS X gibt es eher selten. Dann taucht auch häufig das Problem der falschen Architektur auf (PPC 32/64Bit, Intel 32/64 Bit). Kurzum man muß ihn häufig selbst erstellen. Eine Ausnahme ist da XAMPP, bei dem man es nur noch aktivieren muß ( siehe dazu unten nur den Abschnitt aktivieren in der php.ini).

Da Netbeans einen XDebugger erwartet und viele OS Xler nicht so UNIX-versiert sind, hier ein kurzes howto:


Zunächstmal die Quellcodes der aktuellen Version downloaden von http://www.xdebug.org/ .Das Paket entpacken und ins Terminal wechseln. dort mit

Code: Alles auswählen

cd xdebug.2.0.5/xdebug.2.0.5/
sudo sh (eigenes Kennwort eingeben)




in das innere Verzeichnis wechseln die VersionsNummer ist nat. aktuell anzupassen. Als erstes muß der SourceCode an die PHP-Version angepaßt werden. Für unser OS X PHP geht das mit:

Code: Alles auswählen

/usr/bin/phpize


Dabei entsteht eine ./configure-Datei die die Compilierung vorbereitet. Leider kommt es jetzt zu einem Dilemma das in den Universal-Binaries begründet liegt. Standardmäßig generiert OS X C-Compiler auf Intel-Rechnern nämlich 32-Bit Code. Der Apache ( und das PHP) laufen jedoch mit 64-Bit. Um das Dilemma komplett zu machen das Shell-Executable läuft mit 32Bit, wir brauchen also beide Versionen in einem Binary!

Unglücklicherweise scheint configure dabei Prozesse zu forken, jedenfalls kennen die auch vorab gesetzte Umgebungsvariablen dann nicht. Man hat vermeintlich alles richtig gemacht, erhält jedoch trotzdem kein funktionierendes Executable! Damit das trotzdem klappt ist Folgendes wirklich als eine Zeile komplett so einzugeben:

Code: Alles auswählen

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -arch i386 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -arch i386 -g -Os -pipe" CXXFLAGS="-arch x86_64 -arch i386 -g -Os -pipe" LDFLAGS="-arch x86_64 -arch i386 -bind_at_load" ./configure --enable-xdebug --with-php-config=/usr/bin/php-config


PowerPC User fügen bitte jeweils noch ein -arch ppc in jede Definition hinzu! Sobald das configure-Skript seinen Job getan hat, sind wir endlich soweit und können die Bibliothek erstellen:



sobald auch das beendet ist, muß sie nur noch in Position gebracht werden:

Code: Alles auswählen

cp modules/xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20060613/


ACHTUNG: Pfade passen nur für das OS X eigene PHP und sind andernfalls anzupassen! Nun muß nur noch die php.ini die wir nach /etc/php.ini kopiert haben angepaßt werden. Dabei sind dort folgende Einträge vorzunehmen:

Code: Alles auswählen

zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so

xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_port = 9000
xdebug.remote_host = localhost


wer den OS X Apache und diese PHP-Version verwendet startet dann noch bitte den Apache neu ( noch immer unter sudo sh!):

Code: Alles auswählen

/usr/sbin/apachectl restart


Wer jetzt unter /Libary/Webserver/Documents/ eine Datei mit dem Inhalt

Code: Alles auswählen

<?
phpinfo();
?>


anlegt wird sehen das Xdebug im Copyright-Kasten oben aufgeführt ist und am Ende der Seite ( bei X wie xdebug) die Parameter von xdebug dargestellt sind (Port 9000, dbgp, loalhost,...). Mit diesem xdebug funktioniert dann auch die Entwicklung mit Eclipse, der Betrieb im 64Bit Webserver und die Anwendung des 32Bit PHP-Executables in der Shell!
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Zurück zu „NetBeans PHP - Tutorials“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast