Отладка WordPress с помощью Xdebug - Неустранимая ошибка PHP: неперехваченная ошибка: вызов неопределенной функции get_header()

Я пытаюсь отладить установку WordPress с помощью Xdebug и PhpStorm.

Если я напишу это в верхней части functions.php:

      [line 1]: <?php
[line 2]: $test = '1234';

И установите точку останова в строке 2 и запустите «Debug functions.php», затем я нажимаю эту точку останова и могу отлаживать эту точку останова в PhpStorm. Все идет нормально!

Но если я переместу его вниз, в конец functions.php, и сделаю то же самое, то получу ошибку:

Неустранимая ошибка PHP: Неперехваченная ошибка: вызов неопределенной функции add_action () в /path/to/project/wp-content/themes/my-theme-name/functions.php:44
#0 {main}
Трассировка стека:
вставлено в / путь / к / проекту / wp-content / themes / my-theme-name / functions.php в строке 44

Строка 44 выглядит так:

      [line 43]: include_once( __DIR__ . '/classes/AdminNotice.php' );
[line 44]: add_action('admin_notices', [new AdminNotice(), 'displayAdminNotice']);

Я также пробовал отлаживать другие файлы.

Нравиться page.php. То же самое - если я добавлю свой демо-код (и точку останова) вверху, то он сработает. Но если я сдвину его вниз, то он споткнется get_header(). Ошибка:

Неустранимая ошибка PHP: Неперехваченная ошибка: вызов неопределенной функции get_header () в /path/to/project/wp-content/themes/my-theme-name/page.php:6
Трассировка стека:
#0 {main}
вставлен в / Users / zethodderskov / Code / Greenmind / V2-1__local / app / public / wp-content / themes / my-theme-name / page.php в строке 6

А строка 6 выглядит так:

      get_header(); ?>

И если я устанавливаю точку останова в импортированном классе, то он не останавливается на этой точке останова (хотя я на 100% уверен, что он достигает этой части кода).

Это может быть связано с тем, что он получен во время POST-запроса. Хм ... Ненавижу быть новичком.


Полезная информация

  • Я много раз пробовал настраивать Xdebug, но ни разу не добился успеха. Это самое близкое, что я нашел. Так что это может быть какая-то глупая ошибка.
  • Я использую PHP v. 8.0.6, Xdebug версии 3.0.4 и PhpStorm версии 2020.3.1 - Build #PS-203.6682.180.
  • Удаленный сервер - это Cloudways-сервер .
  • Я определил WordPress (и WooCommerce) как внешние библиотеки (Languages ​​& Frameworks >> PHP). Итак, PhpStorm должен знать WordPress-функции. И я могу CMD+ щелкнуть по функциям WordPress и увидеть определения функций.
  • Если я перейду к «Выполнить» >> «Проверка отладки веб-сервера» и нажму «Проверить», отобразятся все зеленые галочки.
  • Руководство, которому я следовал больше всего, - это отладка Xdebug с нулевой конфигурацией .
  • Вот содержимое моего локального php.ini-файл:
      ...
... Omitted lines
...

[xdebug]
zend_extension="/usr/local/lib/php/pecl/20200930/xdebug.so"
xdebug.mode=debug
xdebug.client_host=12.123.123.123 (IP to Cloudways-server)
xdebug.client_port=9003

; End of file
  • В Cloudways я добавил эти строки в php.ini на удаленном сервере (в разделе «Настройки приложения» >> «Настройки PHP FPM»):
      php_admin_value[display_errors]=on
php_admin_value[memory_limit]=2048M
php_value[xdebug.remote_enable]=1
php_value[xdebug.mode]=debug
php_value[xdebug.client_host]=87.116.38.66

Ответ на комментарии 1

Как указал @LazyOne, тогда я могу отлаживать один файл, тогда как я пытаюсь отладить весь запущенный проект.

Я просто не знаю, как это сделать. Если я перейду к «Выполнить» >> «Редактировать конфигурации» (при отладке), я перейду к этому диалоговому окну:

И я не совсем уверен, что мне здесь делать, поскольку это «заставляет меня» определять, какой файл я пытаюсь отлаживать.

0 ответов

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