Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中调试API(不使用var_dump();die();)_Php_Api_Breakpoints_Xdebug - Fatal编程技术网

如何在PHP中调试API(不使用var_dump();die();)

如何在PHP中调试API(不使用var_dump();die();),php,api,breakpoints,xdebug,Php,Api,Breakpoints,Xdebug,所以我正在用php编写一个api,我想使用一个全服务调试工具。i、 例如,设置断点、查看堆栈跟踪、检查变量等。这种事情在编译语言中非常常见 我已经签出了xdebug,在将它配置为与phpstorm(我的IDE)一起使用后,我失望地发现它只在phpstorm中运行时才起作用,而不是在我实际服务真正的api请求时 为了增加复杂性,api数据库实际上托管在一个vagrant实例上,因此尽管我在本地机器上编写和编辑代码,但正在运行的代码是在虚拟机vagrant环境中运行的 还有别的办法吗?或者我应该习惯

所以我正在用php编写一个api,我想使用一个全服务调试工具。i、 例如,设置断点、查看堆栈跟踪、检查变量等。这种事情在编译语言中非常常见

我已经签出了xdebug,在将它配置为与phpstorm(我的IDE)一起使用后,我失望地发现它只在phpstorm中运行时才起作用,而不是在我实际服务真正的api请求时

为了增加复杂性,api数据库实际上托管在一个vagrant实例上,因此尽管我在本地机器上编写和编辑代码,但正在运行的代码是在虚拟机vagrant环境中运行的


还有别的办法吗?或者我应该习惯于类似于
print_r()的东西吗;退出并重新运行请求?

用于php调试的最佳工具是Xdebug。这里是主页

Php-xdebug


看看这个例子:

使用XDebug,并正确配置它。您可以将其配置为在不运行PhpStorm中的代码的情况下工作

xdebug.remote_enable = on
xdebug.remote_connect_back = on
xdebug.idekey = "vagrant"
确保这些都设置好了。然后,在PhpStorm中,右上角有一个类似于电话图标的东西(以及工具栏中其他调试和运行的东西)。确保全部为绿色(即侦听连接)

可以使用Xdebug设置断点。如果设置正确,它甚至可以与CLI应用程序一起使用。您甚至可以从Vagrant VM内部或远程服务器上调试代码

您只需要研究一下如何设置IDE即可

更多详情:

这可能对您有用:

这是:


还有这个:

你读过这个问题吗?“我已经签出了xdebug,在将其配置为与phpstorm(我的IDE)一起工作后,我很失望”是的,我有。但即使你们不喜欢,Xdebug仍然是最好的解决方案。我想你们的问题是英语。。。谁说我不喜欢xdebug?这里也一样……你把问题读对了吗?Op已经尝试了xdebug,但很失望。您可以将phpstorm设置为连接到vagrant上的xdebug,xddebug将侦听您的断点。您还可以使用php调试栏等工具(例如在Yii框架中使用)