У Xdebug возникают проблемы с запуском на сервере WSL Symfony с использованием PhpStorm

Я использую сервер Symfony с PHP7.3.33 и Xdebug 3.1.5 в подсистеме Debian Windows Linux. Я использую PhpStorm в своей Windows для кодирования, и я также хотел использовать его для отладки с помощью Xdebug.

У меня были проблемы с настройкой моего Xdebug на моем сервере, но мне удалось распознать его PhpStorm.

Затем, когда я звоню на свой сервер, загружая страницу, он останавливается на нескольких файлах, но не на моих точках останова. Он также показывает мне эту ошибку.

Cannot find a local copy of the file on the server /home/pierrem/.symfony5/php/4cddbar1067c22542bca91af1a7693a48ce69eea-router.php
Local path is //home/pierrem/.symfony5/php/4cddbar1067c22542bca91af1a7693a48ce69eea-router.php

Я попытался решить эту проблему, открыв проект из \\wsl$\Debian\home\XXXX и W:\home\XXXX, но это ничего не изменило.

Обновлено: я запустил сервер, используя php -S localhost:8000, и отладчик работает, но только в моем файле index.

Когда я пытаюсь установить точку останова на своем контроллере, он будет отображаться с ошибкой и без остановки на этой точке останова:

File path is not mapped to any file path on server. Edit path mapping to fix the problem.

Я попытался обновить конфигурацию серверов PhpStorm следующим образом, но это все еще не работает.

Насколько мне известно, проблема связана с динамически генерируемым файлом ***-router.php, который создает Symfony — когда IDE получает входящее отладочное соединение, она не видит этот файл в своей VFS (виртуальной файловой системе). Я видел это, даже если бы вы запускали то же самое в локальной системе. Проблема исчезнет, ​​если вы используете «правильный» веб-сервер (Apache/nginx и т. д.).

LazyOne 13.12.2022 19:22

Несмотря на это ... вы все равно должны иметь возможность останавливаться в точках останова в контроллерах. Попробуйте нажать кнопку «Обновить» (File | Reload all from Disk), как только вы получите это, чтобы увидеть, увидит ли IDE этот файл там (конечно, если он не находится в папке «Исключенные»).

LazyOne 13.12.2022 19:23

@LazyOne Я добавил права доступа к моей временной папке php для своих окон и попытался перезагрузить все с диска, но это ничего не изменило, я все еще не могу перейти к своим точкам останова.

Pierrem 14.12.2022 10:55

Такой файл ***-router.php создается по запросу/каждый раз, когда вы вносите изменения в свой код. Когда приходит запрос и вы видите это всплывающее окно (на 2-м снимке экрана), IDE не видит этот файл (он не показывает параметр файла, только neocampus проект). Я не уверен, как это можно решить, если IDE не выполняет автоматическое «обновление» в этот момент. Я просто знаю, что использование надлежащего веб-сервера решает эту проблему (поскольку тогда запрос не обрабатывается сервером Symfony)

LazyOne 14.12.2022 12:20

См. этот вопрос и как парень решил его. У него была такая же проблема -- stackoverflow.com/questions/65326808/…. Именно из-за этого ***-router.php временного файла все рушится. Может быть, вы можете как-то отключить их создание (сам не использую Symfony, поэтому не могу посоветовать)

LazyOne 14.12.2022 12:22

@LazyOne Это лучше, но все еще не работает на моем контроллере. Я обновил вопрос.

Pierrem 14.12.2022 15:42

Ваш последний скриншот не имеет для меня никакого смысла: host должно быть просто имя хоста, а не порт. Сопоставление путей одинаковое - для меня это не имеет смысла. Я могу только предложить удалить ВСЕ записи, попытаться отладить и позволить IDE создать ее для вас (это будет сделано из диалогового окна, которое появляется на 1-м снимке экрана). TBH Я не думаю, что это можно решить здесь (согласно моей ссылке ранее). Совсем не уверен.

LazyOne 14.12.2022 16:02

Попробую позже, но для "хоста" уже так было написано, я просто поменял путь на этом окне.

Pierrem 14.12.2022 17:20

Сервер Symfony создает временный маршрутизатор внутри /home/user/.symfony/php, поэтому у вас появляется первое сообщение об ошибке. Попробуйте выполнить шаги здесь: stackoverflow.com/a/65353702/5391965

Reynadan 14.12.2022 17:41

Я предлагаю снять флажок «Использовать сопоставление путей» и вот как заполнить отладочный сервер FYI i.imgur.com/JrXxJ8W.png

Reynadan 14.12.2022 17:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
11
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо @LazyOne и @Reynadan, которые помогли мне заставить это работать.

Сначала в моем случае мне нужно было запустить сервер, используя следующую команду в моей папке project_name/public.

php -S localhost:8000

Затем в PhpStorm я перехожу в «PHP > Серверы» и удаляю все свои записи конфигурации.

Я начал сеанс отладки, где единственные точки останова, которые я мог использовать, находились в моем файле index.php, потому что PhpStorm не мог видеть за пределами папки, в которой я запустил свой сервер. Затем я возвращаюсь к конфигурации своих серверов в PhpStorm (новое приложение конфигурации) и добавляю абсолютный путь для моего проекта /home/pierrem/neocampus следующим образом (там уже есть путь к моей /public/ папке, но он не нужен, потому что он унаследован от родителя.)

Теперь я могу ставить точки останова в своих контроллерах.

Хороший. Рад, что у вас получилось. Я, хотя это не могло быть сделано (основываясь на прошлом опыте). Теперь похоже, что с тех пор были внесены определенные изменения +, возможно, изначально было сделано что-то не так (например, вы запускаете сервер PHP в неправильной папке).

LazyOne 15.12.2022 12:42

P.S. Нет необходимости в отдельном сопоставлении для public — оно находится в одной папке (как локальной, так и удаленной) и поэтому будет прекрасно унаследовано от родителя. Отдельное сопоставление может потребоваться только в том случае, если путь отличается (например, используется символическая ссылка и т. д.).

LazyOne 15.12.2022 12:46

Другие вопросы по теме