【发布时间】:2016-12-02 23:33:09
【问题描述】:
我已经在我的 Mac 上设置了 php 5.6 和 Apache,并安装了带有 php 插件的 IntelliJ (2016.2)。问题是 IDE 不想连接到本地服务器。
我在 php.ini 中添加了以下几行:
[xdebug]
zend_extension=/usr/local/Cellar/php56/5.6.24/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = "9000"
当我运行 php -v 时,我得到:
Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies 使用 Xdebug v2.4.0,版权所有 (c) 2002-2016,由 Derick Rethans 提供
和phpinfo() 显示
xdebug.remote_enable 开启
xdebug.remote_port 9000 9000
但 IntelliJ 显示:
xdebug.remote_enable 0
我已经检查过,我指向了正确的php.ini(在编辑文件时会出现检查过的路径和其他更改)。
我尝试了所有配置(包括使用 IDE 密钥),但似乎没有任何效果。
有没有办法可以检查调试是否真的正常工作(即是 IDE 无法识别某些东西还是服务器出现故障),因为此时我不知道问题可能是什么。
【问题讨论】:
-
“问题是 IDE 不想连接到本地服务器” 你说的到底是什么意思?如果是关于 PHP 调试 .. 那么 IDE 从不 连接到本地服务器(或其他)。它是 xdebug 连接到调试客户端(在我们的例子中是 IDE)。请检查它是如何工作的:xdebug.org/docs/remote
-
"并且当我运行 php -v 我得到:" 在一些 Mac 设置(例如 MAMP)以及大多数 Linux 发行版上,PHP 将使用一个 php.ini 进行 CLI和 Apache 将使用不同的一种。因此——如果你想调试网页(通过浏览器),那么你需要检查通过浏览器捕获的
phpinfo()输出......你可能会看到使用了不同的 php.ini。 "But IntelliJ shows: xdebug.remote_enable 0" 部分只是证实了这一点(至少在那个方向上给出了非常强烈的提示)。 -
好吧,我已经添加了 phpinfo() 显示的内容(它是通过浏览器显示的),IDE 会显示它正在使用哪个 php.ini。 “它没有连接”我的意思是,当我启动调试器时,它没有遇到任何问题,当我启动/停止本地服务器时它也没有显示任何错误
-
只是为了 100% 清楚:1) 请提供通过浏览器捕获的
phpinfo()输出(实际配置之前的所有内容)的标题 2) xdebug 部分。 -
还有——你是如何安装 PHP 的?它可能与其他事物发生冲突。请 1) 为此类不成功的调试会话收集 xdebug 日志xdebug.org/docs/all_settings#remote_log 2) 显示
sudo lsof -nP -iTCP -sTCP:LISTEN的结果。您有可能在您的计算机上运行 php-fpm ......它使用 TCP 9000 - 与 xdebug 相同的端口 - #2 应该澄清这一点。在这种情况下——在 IDE 和 php.ini 中将 xdebug 端口更改为 9001(或类似)应该可以解决问题。
标签: php macos debugging intellij-idea phpstorm