Phpstorm 使用Xdebug-PHP调试WordPress致命错误:未捕获错误:调用未定义的函数get_header()

Phpstorm 使用Xdebug-PHP调试WordPress致命错误:未捕获错误:调用未定义的函数get_header(),phpstorm,xdebug,xdebug-3,Phpstorm,Xdebug,Xdebug 3,我正在尝试使用Xdebug和PhpStorm调试WordPress安装 如果我在functions.php的顶部写下这句话: [line 1]: <?php [line 2]: $test = '1234'; 我还试着调试其他文件 比如page.php。同样的事情-如果我在顶部添加我的演示代码(和断点),那么它就可以工作了。 但是如果我把它移到底部,它就会绊倒在get\u header()上。错误: PHP致命错误:未捕获错误:调用/path/to/project/wp content

我正在尝试使用Xdebug和PhpStorm调试WordPress安装

如果我在functions.php的顶部写下这句话:

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

我还试着调试其他文件

比如
page.php
。同样的事情-如果我在顶部添加我的演示代码(和断点),那么它就可以工作了。 但是如果我把它移到底部,它就会绊倒在
get\u header()
上。错误:

PHP致命错误:未捕获错误:调用/path/to/project/wp content/themes/my theme name/page中未定义的函数get_header()。PHP:6
堆栈跟踪:
#0{main}
在第6行输入/Users/zethodderskov/Code/Greenmind/V2-1__local/app/public/wp content/themes/my theme name/page.php

第6行是这样的:

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

如果我在导入的类中设置了一个断点,那么它不会在该断点处停止(即使我100%确定它到达了代码的该部分)

这可能是因为它是在POST请求期间到达的。隐马尔可夫模型。。。我讨厌当傻瓜


有用的情报
  • 我已经尝试了很多次设置Xdebug,但从未成功过。这是我最近的一次。所以这可能是个愚蠢的错误
  • 我使用的是PHPV。8.0.6、Xdebug版本3.0.4和PhpStorm版本2020.3.1-构建#PS-203.6682.180
  • 远程服务器是一个服务器
  • 我将WordPress(和WooCommerce)定义为外部库(语言和框架>>PHP)。所以PhpStorm应该知道WordPress函数。我可以用CMD+点击WordPress函数并查看函数定义
  • 如果我转到“运行”>>“Web服务器调试验证”并单击“验证”,则会显示所有绿色标记
  • 我最喜欢的指南是这个
  • 以下是我的本地
    php.ini
    -文件的内容:
  • 在Cloudways中,我已将这些行添加到远程服务器上的php.ini(在“应用程序设置”>“php FPM设置”下):

对意见1的答复 正如@LazyOne所指出的,那么我可能正在调试单个文件,而我正试图调试整个正在运行的项目

我只是不知道怎么做。如果转到“运行”>>“编辑配置”(在“调试”下),则会出现以下对话框:


我不确定我应该在这里做什么,因为它“强迫我”定义我要调试的文件。

“并在第2行设置一个断点,然后运行‘debug functions.php’,“如果我理解正确,那么您正试图直接调试
functions.php
文件。但它不应该像那样工作。它意味着作为正常WordPress代码执行流的一部分执行。现在您正在绕过整个WP核心代码,包括自动加载类和在正常执行流中执行
functions.php
之前通常定义的任何函数。1) “
xdebug.client\u host=12.123.123.123(到Cloudways服务器的IP)
”上的旁注--
client\u host
用于指定运行IDE(调试客户端)的IP。是Xdebug连接到IDE,而不是其他方式。2) 这让我想到,现在您可能正在CLI环境中本地执行(调试)您的
functions.php
(当您点击php脚本类型配置的“调试”时,IDE会覆盖这些设置)而不是一个网页请求……添加到@LazyOne所说的内容中——如果您正在调试Cloudways服务器上运行的WordPress,您甚至不需要在本地机器上安装Xdebug。Xdebug只需要在PHP运行的地方才可以运行。@Zeth是的,您在CLI中绕过WordPress核心代码进行本地运行/调试。在这种情况下,错误是正确的。您需要改为进行网页调试(使用屏幕截图上的
+
按钮并添加适当类型的运行/调试配置……或者最好使用零配置方法,使用Xdebug浏览器辅助扩展控制“调试我”标志(Xdebug cookie)。@Zeth为此,您需要在Cloudways服务器上配置Xdebug,
xdebug.client_host
必须指向您的本地计算机(用于从服务器连接到家庭/工作PC的IP),并且您的路由器/防火墙必须允许在xdebug端口上进行此类连接。
...
... 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
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