Отладка 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, тогда я могу отлаживать один файл, тогда как я пытаюсь отладить весь запущенный проект.
Я просто не знаю, как это сделать. Если я перейду к «Выполнить» >> «Редактировать конфигурации» (при отладке), я перейду к этому диалоговому окну:
И я не совсем уверен, что мне здесь делать, поскольку это «заставляет меня» определять, какой файл я пытаюсь отлаживать.