Debug phpstorm

# Включение в phpstorm debuger. В докер. php 7.4

Занимает минут максимум ~20мин(С ребилдом всего)

* Установить xdebug(плагин) в chrome, в нем должен быть выбран xdebug.
 Оптионсах быть выбран выбран 'IDE key' должен быть выбран "PhpStorm" в поле прописано 'PHPSTORM' - без кавычек.
 Должен быть включен в режиме "Debugging enabled" и отображаться зелененьки значком(левой кнопкой мыши)
* В php.ini должно быть прописано (обычно лежит тут 'проект/docker/php-fpm/php.ini')

```
max_execution_time = 1000
max_input_time = 1000

[xdebug]
zend_extension = xdebug.so
xdebug.mode = debug
xdebug.client_host = 172.18.0.1
xdebug.client_port = 9003
xdebug.start_with_request = yes
#xdebug.log = "/var/www/demo/logs/nginx/xdebug.log"
xdebug.idekey = PHPSTORM
xdebug.discover_client_host = false

```
* Заходим в phpStorm file->Settings->PHP->Servers добавляем серрвер
	+ Name: какое угодно,
	+ Host: 127.0.0.1
	+ Port: {здесь указываем порт сайта по которому мы просматриваем в chrome}
	+ Debugger: Xdebug
	+ Ставим галочку "Use path mapping", тут надо проставить пути из docker контейнера(посмотреть можно sudo
	 docker exec -it clinic\_php-fpm /bin/bash). Надо прописать:
		- Основную папку где лежит проджект пример:
		 /home/orb-it-dev34/projects/phpStorm/atb.major-design.ru - папка проекта

		/var/www/atb/site - папки из image(sudo
		 docker exec -it clinic\_php-fpm /bin/bash)
		- Дополнительно public: /home/orb-it-dev34/projects/phpStorm/atb.major-design.ru/public
		 /var/www/atb/site/public , но вроде работает и без него
* Run->Edit configuration->Нажимаем плюсик-> Php remote debug (там должен быть сервер из предыдущего пункта)
* Run->Edit configuration->Нажимаем плюсик-> Php remote debug (там должен быть сервер из предыдущего пункта)

 ide key(session id) 'PHPSTORM' - без кавычек

 * Далее в файле "папка проекта"/docker/php-fpm/Dockerfile прописываем следующее:
 (тестировалось только на php 7.4), прописать строчку посередине:

```
# Установка PHP и его расширений
RUN apt-get update \
    && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main" > /etc/apt/sources.list.d/ondrej-php.list \
    && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4F4EA0AAE5267A6C \
    && apt-get update -yqq \
    && apt-get install -y --no-install-recommends \
        php7.4-cli php7.4-fpm php7.4-dev php-pear \
        php7.4-curl php7.4-json php7.4-mbstring php7.4-readline php7.4-xml php7.4-zip php7.4-mysql php7.4-bcmath php7.4-imagick imagemagick

# Xdebug !!!!!!!!!!!!!!!!!!!!!!  - только эта строчка должна быть прописана!!!!!!!
RUN apt-get update && apt-get install php7.4-xdebug && phpenmod xdebug
!!!!! все что сверху и снизу для примера !!!!!!!!!!!!!!!!!!!!!

# Конфигурация
RUN sed -i -e "s/pid =.*/pid = \/var\/run\/php7.4-fpm.pid/" /etc/php/7.4/fpm/php-fpm.conf \
    && sed -i -e "s/error_log =.*/error_log = \/proc\/self\/fd\/2/" /etc/php/7.4/fpm/php-fpm.conf \
    && sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.4/fpm/php-fpm.conf \
    && sed -i "s/listen = .*/listen = 9000/" /etc/php/7.4/fpm/pool.d/www.conf \
    && sed -i "s/;catch_workers_output = .*/catch_workers_output = yes/" /etc/php/7.4/fpm/pool.d/www.conf \
    && sed -i "s/;request_terminate_timeout = .*/request_terminate_timeout = 30/" /etc/php/7.4/fpm/pool.d/www.conf

```
* Заходим в консоль phpstorm -> заходим в папку docker (cd docker) -> выключаем наш проект (docker-compose down)->
 билкдим все плагины(скрестив пальцы (docker-compose -p atb build)) - должно все сбилдится
* Запускаем проект (docker-compose -p atb up -d)
* "папка проекта"/public/index.php в самый верх прописать xdebug\_info();exit;, при открывании сайта должна вылезти
 информация xdebud(как php\_info()) - можно убирать
* Все готово
* Ставим точку в php -> phpSrorm -> Run -> Debug 'atb' -> перезапускаем страницу в браузере-> и мы должны увидеть
 debug в phpstorm(проверяем обычно на index.php)

Все действия можно проводить из верхнего меню

Также можно увеличить длинну работы php скрипта php.ini max\_execution\_time = 1000

Также нельзя оставлять debug включать и запускать другие проекты, проект скорее всего зависнет

Также нельзя нажимать на трубочку и оставлять(трубочкой не пользуемся)

Также могут быть проблемы в docker контейнере (надо смотреть)

 Все сделал Макс. документация Мокров