genbodev
8/10/2017 - 5:50 PM

xdebug + vm + centos + phpstorm

xdebug + vm + centos + phpstorm

xdebug + vm + centos7 + phpstorm

Потратил весь день на настройку, поэтому опишу все тут

xdebug - Установка

Для начала его нужно установить. Я делал таким образом: В index.php вставляем phpinfo();. Все что вернула данная функция - вставляем в специальное окошко на странице:

https://xdebug.org/wizard.php

Нам вернут инструкцию на чистейшем английском. Из нее мы узнаем:

  • В блоке Summary - информация по нашему серверу
  • Instructions - инструкция по установке

Для начала займемся установкой:

  1. Download xdebug-2.5.4.tgz (скачиваем)
  2. Unpack the downloaded file with tar -xvzf xdebug-2.5.4.tgz (распаковываем на сервере)
  3. Run: cd xdebug-2.5.4 (Идем в каталог, куда все распакавалось)
  4. Run: phpize (А вот тут я словил проблему. Как решить см. ниже) phpize выдаст инфу:
Configuring for:
...
Zend Module Api No:      20121212
Zend Extension Api No:   220121212

Она должна быть именно такой. Иначе что-то пошло не так )

  1. Run: ./configure (Запускаем)
  2. Run: make (Аналогично)
  3. Run: cp modules/xdebug.so /usr/lib64/php/modules (Это мы копируем модуль к нам в систему)
  4. Edit /etc/php.ini and add the line (Добавляем сюда путь. Но я поступил по другому. См. ниже) Путь: zend_extension = /usr/lib64/php/modules/xdebug.so
  5. Restart the webserver (Перезапускаем сервер. Вот так у меня: systemctl restart httpd.service) Гарантией перезапуска является обновление информации после phpinfo();

Итак, какую же я проблему схватил на пункте 4? А то что phpize не работает. Интерент мне советовал сделать так: pecl install Xdebug и даже так: apt install php5-dev. А потом и так: yum install php-devel. Но все это приводило к конфликту: Error: php55w-common conflicts with php-common-5.4.16-42.el7.x86_64. Я думаю, что это проблема моей, на скорую руку, кривонастроеной ОС. Но выход я нашел:

yum install php55w-devel

Что нужно знать на данном этапе? Из блока Summary держим инфу в голове:

Configuration File: /etc/php.ini (Файл конфигурации php, но он не понадобиться)

xdebug - Настройка

Можно настраимвать и /etc/php.ini, но я пошел другим путем. Можно создать отдельный файл конфигурации и все внести в него Надо найти место, откуда PHP свои конфиги. Каким то чудесным образом я догадался что это /etc/php.d/ - туда я создал файд xdebug.ini с такими строками:

zend_extension = /usr/lib64/php/modules/xdebug.so

[xdebug]
xdebug.default_enable = On
xdebug.var_display_max_depth = 6
xdebug.remote_enable = On
xdebug.remote_host = 192.168.1.47
xdebug.remote_port = 9008
xdebug.remote_handler = dbgp
xdebug.idekey = PHPSTORM
xdebug.remote_autostart = 1
xdebug.remote_log=/tmp/xdebug/xdebug.log
xdebug.profiler_enable_trigger = 1
xdebug.profiler_enable = 0
xdebug.profiler_output_dir = /tmp/xdebug/profiler/
xdebug.show_local_vars = 1
xdebug.overload_var_dump = 1

Напишу то что я знаю:

zend_extension = /usr/lib64/php/modules/xdebug.so; Путь к модулю xdebug
xdebug.remote_host = 192.168.1.47; Это ip-адрес сетевой карты на моем компе (реальный-физический)
xdebug.remote_port = 9008; Это порт, любой, но 9000 жел. не выбирать
xdebug.remote_handler = dbgp; Это протокол общения с IDE
xdebug.idekey = PHPSTORM; Это тоже для IDE
xdebug.remote_autostart = 1; Автозапуск какой-то

После этого - рестар сервера и проверка в phpinfo(); Там должно до кучи появиться за xdebug

phpstorm - Настройка

Уже должен быть настроен удаленный сервер. Но на всякий заброшу сюда настройки: setting - deployment - plus(+) Вкладка connection: type SFTP SFTP host 192.168.1.150 Port 22 Root path /home/igor/projects/kpidrive/frontend User name igor Password фиг вам Вкладка mapping: Local path C:\OpenServer\domains\vm.kpidrive.frontend Deployment path on server... / Web path on server... / Вкладка Exclude Paths Добавлено /local /test /node_modules

Такие дела. А мы идем дальше: Настройка интерпретатора setting - language & frameforks - php PHP language level 5.5 (Тот что на сервере) CLI Interpreter Жмакаем по точкам - Потом добавляем по plus(+) именно remote. Тут я пропускаю, там вроде все логично, как добавить Path mappings - Надо чтобы было Local Path Путь к файлам проекта Remote Path Путь к этим же файлам, но на сервере (/home/igor/projects/kpidrive/frontend) Настройка Debug* setting - language & frameforks - php - debug В секции Xdebug выбираем port 9008, ставим галку Can accept external connections Можно пару галок ниже поставить Force чего то там. Это заставит дебагер на первой строчке останавливаться. Но это не точно. Настройка DBGp Proxy setting - language & frameforks - php - debug - DBGp Proxy IDE Key PHPSTORM Host 192.168.1.150 (IP виртуальной машины) Port 9008

xdebug helper - установка

Качаем расширение для chrome. Проверяем настройки (они понятные). Активируем.

готово, можно юзать