XDebug beállítás XAMPP és Mac OS X Mountain Lion alatt
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:
- terminalban a php -i parancs, az eredmény legelején írja ki, hogy mi a gond az xdebuggal.
- xampp/logs mappában error logokat bányászva lehet találni hibajelzéseket, de én ebből nem jutottam sehova.
- 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.
- 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.
- 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