Я использую сервер 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 и т. д.).
Несмотря на это ... вы все равно должны иметь возможность останавливаться в точках останова в контроллерах. Попробуйте нажать кнопку «Обновить» (File | Reload all from Disk), как только вы получите это, чтобы увидеть, увидит ли IDE этот файл там (конечно, если он не находится в папке «Исключенные»).
@LazyOne Я добавил права доступа к моей временной папке php для своих окон и попытался перезагрузить все с диска, но это ничего не изменило, я все еще не могу перейти к своим точкам останова.
Такой файл ***-router.php создается по запросу/каждый раз, когда вы вносите изменения в свой код. Когда приходит запрос и вы видите это всплывающее окно (на 2-м снимке экрана), IDE не видит этот файл (он не показывает параметр файла, только neocampus проект). Я не уверен, как это можно решить, если IDE не выполняет автоматическое «обновление» в этот момент. Я просто знаю, что использование надлежащего веб-сервера решает эту проблему (поскольку тогда запрос не обрабатывается сервером Symfony)
См. этот вопрос и как парень решил его. У него была такая же проблема -- stackoverflow.com/questions/65326808/…. Именно из-за этого ***-router.php временного файла все рушится. Может быть, вы можете как-то отключить их создание (сам не использую Symfony, поэтому не могу посоветовать)
@LazyOne Это лучше, но все еще не работает на моем контроллере. Я обновил вопрос.
Ваш последний скриншот не имеет для меня никакого смысла: host должно быть просто имя хоста, а не порт. Сопоставление путей одинаковое - для меня это не имеет смысла. Я могу только предложить удалить ВСЕ записи, попытаться отладить и позволить IDE создать ее для вас (это будет сделано из диалогового окна, которое появляется на 1-м снимке экрана). TBH Я не думаю, что это можно решить здесь (согласно моей ссылке ранее). Совсем не уверен.
Попробую позже, но для "хоста" уже так было написано, я просто поменял путь на этом окне.
Сервер Symfony создает временный маршрутизатор внутри /home/user/.symfony/php, поэтому у вас появляется первое сообщение об ошибке. Попробуйте выполнить шаги здесь: stackoverflow.com/a/65353702/5391965
Я предлагаю снять флажок «Использовать сопоставление путей» и вот как заполнить отладочный сервер FYI i.imgur.com/JrXxJ8W.png






Спасибо @LazyOne и @Reynadan, которые помогли мне заставить это работать.
Сначала в моем случае мне нужно было запустить сервер, используя следующую команду в моей папке project_name/public.
php -S localhost:8000
Затем в PhpStorm я перехожу в «PHP > Серверы» и удаляю все свои записи конфигурации.
Я начал сеанс отладки, где единственные точки останова, которые я мог использовать, находились в моем файле index.php, потому что PhpStorm не мог видеть за пределами папки, в которой я запустил свой сервер. Затем я возвращаюсь к конфигурации своих серверов в PhpStorm (новое приложение конфигурации) и добавляю абсолютный путь для моего проекта /home/pierrem/neocampus следующим образом (там уже есть путь к моей /public/ папке, но он не нужен, потому что он унаследован от родителя.)
Теперь я могу ставить точки останова в своих контроллерах.
Хороший. Рад, что у вас получилось. Я, хотя это не могло быть сделано (основываясь на прошлом опыте). Теперь похоже, что с тех пор были внесены определенные изменения +, возможно, изначально было сделано что-то не так (например, вы запускаете сервер PHP в неправильной папке).
P.S. Нет необходимости в отдельном сопоставлении для public — оно находится в одной папке (как локальной, так и удаленной) и поэтому будет прекрасно унаследовано от родителя. Отдельное сопоставление может потребоваться только в том случае, если путь отличается (например, используется символическая ссылка и т. д.).