使用 PhpStorm 和 Xdebug 调试 Symfony REST API
Debugging Symfony REST API using PhpStorm & Xdebug
我正在尝试为 PhpStorm 设置 xdebug。
设置如下:
- Symfony 应用程序在 Docker 容器中
- 我将它用于 REST API 调用
到目前为止我尝试过的:
已安装 Xdebug - reference
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
和运行命令:
echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.idekey = PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.default_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_autostart = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.profiler_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_host = "docker.for.mac.host.internal"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
像下图一样设置 PhpStorm(除了端口是 8090 作为我的 Web 应用程序 运行s 在该端口上。我使用 localhost:8090/
在本地访问网站):
现在,当我拨打 API 电话时,没有任何反应。它不会在断点处停止。
有人帮我解决这个问题吗?
PS: 我正在使用 Xdebug Helper
chrome 插件。
这是我在 Docker LAMP 堆栈中使用的设置
https://github.com/delboy1978uk/lamp
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_port=9001
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.idekey="PHPSTORM"
xdebug.max_nesting_level = 250
我用的是PHP-FPM,所以9000端口已经被占了,改成9001试试,应该可以的!
我终于能够在 MacBook 上使用它了。我使用 Symfony4
作为 Rest API,它位于 docker 容器和 Apache 服务器中。
在dockerfile
中,(确保将其几乎放在文件末尾,以免在运行 composer
或cli
)
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_port = 9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_handler = "dbgp"" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_host = "host.docker.internal"" >> /usr/local/etc/php/conf.d/xdebug.ini
host.docker.internal
适用于 Mac 和 Windows。 More Information
在主机中,打开PhpStorm
Preferences -> Languages & Frameworks -> PHP -> Debug -> DBGp Proxy
IDE 键:XDEBUG_ECLIPSE
HOST:{{主机IP地址}}
端口:9000
转到Preferences -> Languages & Frameworks -> PHP -> Servers
单击 +
,为其命名,主机为 the address on which your application is running
(在我的例子中为 localhost
),应用程序的端口号(8090
为我的申请)
我无法弄清楚路径映射应该是什么,所以我没有涵盖那部分。如果您不设置它并没有什么害处,但会使您的应用程序变慢几秒钟。
如果您无法确定映射,请确保取消选中复选框 Force break at first line when no mapping specified
,可以在 Preferences -> Languages & Frameworks -> PHP -> Debug
安装 chrome 插件 Xdebug Helper,然后按照那里提供的说明进行操作。
最后一步是在 PhpStorm
中启用侦听器。 Run -> Start Listening for PHP Debug Connections
通过设置断点来调试。
我正在尝试为 PhpStorm 设置 xdebug。
设置如下:
- Symfony 应用程序在 Docker 容器中
- 我将它用于 REST API 调用
到目前为止我尝试过的:
已安装 Xdebug - reference
RUN pecl install xdebug RUN docker-php-ext-enable xdebug
和运行命令:
echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.idekey = PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.default_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_autostart = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.profiler_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_host = "docker.for.mac.host.internal"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
像下图一样设置 PhpStorm(除了端口是 8090 作为我的 Web 应用程序 运行s 在该端口上。我使用 localhost:8090/
在本地访问网站):
现在,当我拨打 API 电话时,没有任何反应。它不会在断点处停止。
有人帮我解决这个问题吗?
PS: 我正在使用 Xdebug Helper
chrome 插件。
这是我在 Docker LAMP 堆栈中使用的设置
https://github.com/delboy1978uk/lamp
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_port=9001
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.idekey="PHPSTORM"
xdebug.max_nesting_level = 250
我用的是PHP-FPM,所以9000端口已经被占了,改成9001试试,应该可以的!
我终于能够在 MacBook 上使用它了。我使用 Symfony4
作为 Rest API,它位于 docker 容器和 Apache 服务器中。
在
dockerfile
中,(确保将其几乎放在文件末尾,以免在运行composer
或cli
)RUN yes | pecl install xdebug \ && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_port = 9000" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_handler = "dbgp"" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_host = "host.docker.internal"" >> /usr/local/etc/php/conf.d/xdebug.ini
host.docker.internal
适用于 Mac 和 Windows。 More Information在主机中,打开
PhpStorm
Preferences -> Languages & Frameworks -> PHP -> Debug -> DBGp Proxy
IDE 键:XDEBUG_ECLIPSE HOST:{{主机IP地址}} 端口:9000
转到
Preferences -> Languages & Frameworks -> PHP -> Servers
单击
+
,为其命名,主机为the address on which your application is running
(在我的例子中为localhost
),应用程序的端口号(8090
为我的申请)我无法弄清楚路径映射应该是什么,所以我没有涵盖那部分。如果您不设置它并没有什么害处,但会使您的应用程序变慢几秒钟。
如果您无法确定映射,请确保取消选中复选框
Force break at first line when no mapping specified
,可以在Preferences -> Languages & Frameworks -> PHP -> Debug
安装 chrome 插件 Xdebug Helper,然后按照那里提供的说明进行操作。
最后一步是在
PhpStorm
中启用侦听器。Run -> Start Listening for PHP Debug Connections
通过设置断点来调试。