XDebug beállítás XAMPP és Mac OS X Mountain Lion alatt

Szerző: Borsos Albert 2015-04-20 11:16 Szólj hozzá!

Ma circa 4 órámba telt összehoznom Mountain Lion alatt a XAMPP-ot az xdebuggal. Ami elég nagy szégyen, mert windows alatt 2perc. Ezt egy sidenote-nak szánom magamnak, hogy legközelebbe ne menjen rá ennyi időm és még másoknak is hasznos lehet :)

#Update: A legjobb megoldás: Ne használj XAMPP-ot!

A legjobb megoldás ha Vagrant-ot használsz. Én pl a Laravel vagrantbox-át, a Homestead-et használom. De az OS X-ben alapból benne van a php és az apache. Néhány beálítás után ugyanolyan jól működik mint a XAMPP. És használhatsz MariaDB-t MySQL helyett. PHPMyAdmin alternatívaként pedig inkább használj Sequel Pro-t ami ingyenes. Viszont ha nem Vagrant-ot használsz, akkor lehet hogy egy OSX frissítés után újra kell forgatnod a php-t.

A megoldás röviden:

Terminal ablakot kell nyitni és rögtön egy "sudo su -" paranccsal indítok.

Az xdebug wizard oldal nagyon jo leírást ad arról, hogy hogy kell telepiteni, csak nem teljesen pontos.

Ehhez viszont fel kell tenni a homebrew-t amivel fel lehet telepíteni az autoconfig-ot. Szerencsére 2 sort kell lefuttatni, szóval nem vészes.

Homebrew install nem root felhasználóként:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

Autoconf install:

brew install automake

Ha nincs fent, akkor fel kell telepíteni az XCode-ot az AppStoreból, majd a Beállítások - Letöltések menüpont alatt fel kell telepíteni a Command Line Tools-t.

phpinfo() tartalmát bemásolva kapjuk meg a pontos leírást

le kell tölteni az xdebug-2.3.3.tgz filet majd kicsomagolni. Navigáljunk a terminálban ebbe a mappába, majd futtassunk phpize-t.

A phpize futtatását kell megfelelő útvonannal indítani, mert alapból a /usr/bin/phpize fut le, ami nekünk nem jó. Nálam XAMPP 1.8.2-n ez így nézett ki:

/Applications/XAMPP/xamppfiles/bin/phpize

Majd

./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config

így a megfelelő Zend API-val fog generálódni az xdebug.so fájlunk. De ehhez egy

make

parancsot is le kell futtatni :)

A létrejött fájlt másoljuk be a XAMPP mappába. Ehhez root jog kell, legegyszerűbb ezt lefuttatni Terminalban:

cp modules/xdebug.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20100525

Majd a php.ini-be az alábbi kódrészletet kell betenni, a végére, ha nincs [xdebug] bejegyzésünk

[xdebug]
zend_extension = "/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.profiler_enable = On
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

Apache restart és elvileg kész. localhost/xampp -> phpinfo()-ban ha találsz xdebug bejegyzést akkor jól csináltad.

Ha mégsem működik, akkor a következő módszerekkel lehet megtalálni a hibát:

  1. terminalban a php -i parancs, az eredmény legelején írja ki, hogy mi a gond az xdebuggal.
  2. xampp/logs mappában error logokat bányászva lehet találni hibajelzéseket, de én ebből nem jutottam sehova.
  3. Előfordulhat olyan, hogy nem megfelelő architektúrára dob hibát, ekkor 32bit-es xdebug.so filet kell generálni, én ezzel próbálkoztam sokat, de a végén mégis 64bites kellett nekem.
  4. Nekem a legtöbb gond azzal volt, hogy nem egyezett a lefordított xdebug.so Zend API-ja a futtató php Zend API-jával. Ezért kell figyelni arra, hogy ugyanazzal a phpize-zal és php-configgal fordíttassuk le, mint amit a webszerverünk használ.
  5. Extra info: Zend Optimizerrel nem működik szóval ezt ki kell kommentelni a php.ini-ben és a"implicit_flush=On"-t kell beállítani, bár lehet, hogy Off-ra állítva is megy, ezt már nem próbáltam ki
 
A hozzászólások a Disqus segítségével jöttek létre