Categories
Magento Работа

Vagrant + Magento + Xdebug + PhpStorm

Комбинацията от Magento и PHPStorm може би е доста популярна сред колегите, които се занимават с Magento, но ако сложим и Vagrant в микса, таргет зоната на този пост може би е много малка. Все пак ще изложа няколко стъпки как да вържем xdebug, за да ни помага при разследването на проблем.

Моят обичаен начин на работа е:

  • Ubuntu като host операционна система
  • Серия от vagrant управлявани виртуални машини (пак с ubuntu)
  • PHP Storm за IDE

Първо трябва да се инсталира xdebug на виртуалната машина

sudo apt-get install php-pear
sudo apt-get install php-dev
sudo pecl install xdebug

След това отваряме php.ini за редация с вашия любим vim редактор.

Добавяме най-долу следния ред (може и да е различен при вас, затова вижте добре какво е “изплюл” инсталацията на xdebug)

zend_extension=/usr/lib/php/20131226/xdebug.so

Запишете файл и рестартирайте apache. Ако имате phpinfo файл, проверете дали xdebug разширението е видимо. Ако всичко е ОК, продължете напред. Ако не е, тук се разделяме с вас.

Пак отваряме php.ini и добавяме следните редове под този със zend_extension

xdebug.remote_enable=1
xdebug.remote_host=10.0.2.2
xdebug.remote_port=9000

Това ще зададе най-важните настройки на xdebug, а именно че е разрешен за ползване (remote_enable), ip адреса на който да търсим връзка с него, а също и port-а. Някъде тук започвайте да стискате палци да нямате firewall, който да забранява такива връзки.

Записваме и рестатираме apache. Уверете се, че съществуващите сайтове на виртуалната машина все още работят.

Следващите стъпки са вече в PHP Storm като целта е да го настроим така че да прави връзка към xdebug на vagrant машината.

Отворете проекта, който искате да debug-вате.

Изберете Run -> Edit configurations, a след това добавете нова “PHP Remote Debug” конфигурация. Кръстете я както желаете, аз обикновено избирам същото име като проекта, защото в повечето случаи на една виртуална машина имам само един проект и няма да шервам debug връзката с други проекти. Ако вие мислите да споделята връзката, то тогава е хубаво да изберете по-общо име.

След това трябва да избере сървър, което ще отвори поредния popup прозорец. Не се плашете.  Въведете име на сървъра и същите IP и PORT, който по-рано записахме в xdebug конфигурацията в php.ini. На мен ми отне повече време, отколкото съм готов да споделя, докато разбера че IP-то е на xdebug сесията, а не на виртуалната машина.

Изберете mapping-а между файловете на хост машината и тези на сървъра. Реално, ако използвате vagrant и shared volumes, файловете са едни и същи, но в контекста PHP Storm, за него са различни.

File/Directory би трябвало да е попълнено по подразбиране, като само в “Absolute path on the server” има нужда от попълване. Попълнете пълния път до проекта на виртуалната машина. Би трябвало да е нещо като “/var/www/html” или “/var/www/vhosts/some-site.com”. Натиснете ENTER, за да се запише. Звучи малоумно, но не е толкова интуитивно и няколко пъти php storm ми изтрива стойността. 

Това е конфигурацията на сървъра на debug конфигурацията. Натискате OK, за да запишете. Би трябвало да се окажете на предния popup. Въведете session_name за име на Ide key (session id). Това е необходимо,за да може да пускате и спирате debug сесията през browser-а. OK, OK, save.

(Пред)Последно!

Ако за първи път правите връзка между PHP Storm и PHP Remote Debug, трябва да кажете на PHP Storm да “слуша” за debug връзка като цяло. Това става от File -> Settings -> Language & Frameworks > PHP -> Debug. В десния панел трябва да има секция “Pre-configuration”, в която точка 3 трябва цъкнете на “Start listening”. ОК.

 

Ииии последно!

Трябва да си добавите разширение за Chrome, с което да пускате и спирате xdebug сесията от страна на browser-а. Това става посредством Xdebug helper. Ако не ми вярвате, че не е refaral, просто го потърсете в магазина на chrome. Инсталирате го и ще се появи една хлебарка в горния десен ъгъл. Не я пръскайте с Raid, че може да си повредите екрана. Отворете сайта, който искате да debug-вате и след това изберете сивата хлебарка и от нея цъкенете debug.

Ако все още не сте се отказали, вече е време за debug-ване.

За да валидирате, че всичко ви е ОК, намерете функция, която знаете че на 100% ще се извика при refresh на страницата. В index.php или в някой controller. В случая на Magento, може да отворите app/code/Mage/Catalog/controllers/ProductController.php и viewAction метода.

Цъкате с левия бутон на toolbar, където са номерата на редовете и срещу дефиницията на $categoryId. Ще се появи една червена точка. Казва се breakpoint.

Отворете която и да било продуктова страница в Magento.

Magic!

Това е 🙂 Няма да продължавам с обяснение как се debug-ва, защото и аз толкова знам. Ако искате да спрете debug сесията, натиснете зеления триъгълник и премахнете breakpoint-а като го натиснете, все едно е хлебарката.

Categories
Кулинарно ми е

Рецепта: Ябълкова пита (на мама)

Ябълкова пита

Чудесен начин да започна отново списването на моя позабравен блог. А именно с вкусна рецепта. Нека започна отначало.

Обичам да си хапвам. Това не е тайна за моите приятели. Не съм 200 кила, но не съм и 80. По-важното е, че от около 2 години, горе долу след като се задомих, започнах да готвя по-активно. Masterchef също оказа влияние. Не че показват някакви техники, но като видях как разни хора готвят с лекота (поне на камера така изглежда), реших че не е толкова страшно. 

Един от любимите ми десерти е ябълковата пита, която приготвя майка ми. Майка ми пък я е взела преди много години от нечия друга майка. Не съм майка, но пък ще я споделя с вас.

Необходими съставки (за двойна доза):

За плънката:

  1. 1кг. ябълки (за предпочитане по-кисели)
  2. 1 с. л. канела
  3. 1/2 ч.ч. захар
  4. Стафиди (по желание)
  5. Орехи (по желание)

За блатовете:

  1. 4 яйца
  2. 3 ч.ч. захар
  3. 1 ч.ч. олио
  4. 1 ч. л. сода
  5. 600 гр. брашно

Настъргват се ябълките, а след това се посипват с канелата и захарта. Добавят се стафидите и орехите. Може и люта чушка, ако искате – за изненада. Но това ще е в центъра на питата. Оставя се за половин час да си пусне сока.

През това време яйцата се смесват със захарта. Яко бъркане докато сместта побелее. Добавя се олиото на тънка струйка под непрекъснато бъркане. Содата се разтваря в малко водичка (ама малко) и се слага при сместа. Бъркай! Брашното също се слага по малко докато сместта започне да се бърка трудно с лъжица.

Ако не ви мързи, може да сложите малко повече брашно и да разточите тестото, а след като ви мързи – изливавате сместта на добре намазнена тавичка, отгоре ябълките, отгоре другата половина.

При всички положения трябва долния блат да направи нещо като корито, за да се запечатат добре ябълките, а да не става като торта с ябълки.

Пече се 15 минути на 220 градуса на долен реотан с вентилатор. След това още 35-40 минути на 180 градуса без вентилатор. Като порозовее коричката, сложете салфетка да не загори.

Най-добрия резултат при хапването е когато се остави 24 часа да попият ябълките в блаттовете, но тя порцията е голяма и може почти веднага да хапнете, след 24 часа пак.