【发布时间】:2016-01-15 10:13:38
【问题描述】:
编辑:我现在删除了 xdebug.so 我手动安装的版本,并通过 Homebrew 安装了 XDebug。当我在命令行输入“php -i”时,xdebug 似乎已安装;但是当我运行 phpinfo() 时,仍然没有 XDebug 的迹象。
我刚买了一台新 Mac,所以每次购买新 Mac 时,我都会重建我的本地 Web 开发环境(这一次,遵循一个很棒的教程:https://echo.co/blog/os-x-1010-yosemite-local-development-environment-apache-php-and-mysql-homebrew)
在我开始安装 XDebug 扩展之前,一切都很顺利。我使用 Komodo 作为开发环境,所以就像我过去一直做的那样,我按照这里的说明进行操作:http://docs.activestate.com/komodo/7.1/debugphp.html#debugphp_top
我按照信中的说明进行操作,但无法让 xdebug.so 出现在我的 phpinfo.php() 页面中。这是我所做的:
- 创建了一个 phpinfo.php 文件,以便我可以找到正确的 php.ini 文件
- 查看那个phpinfo.php文件,发现“加载的配置文件”是“/usr/local/etc/php/5.6/php.ini”
- 编辑了 php.ini,在文件底部添加以下行:
_
zend_extension=/usr/local/Cellar/php56/5.6.14/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=<idekey>
; You may also want this - to always start a remote debugging connection.
;xdebug.remote_autostart=1
- 运行“brew services restart httpd22”(为了确定,“sudo apachectl restart”)
当我重新加载 phpinfo.php 时,它包含对 xdebug.so 的引用。
我可以确认 xdebug.so 存在于 /usr/local/Cellar/php56/5.6.14/lib/php/extensions/no-debug-non-zts-20131226 并且 /usr/local/Cellar/php56/5.6.14/lib/php/extensions/no-debug-non-zts-20131226 被设置为 php.ini 中的“extension_dir”。
我错过了什么?!
【问题讨论】:
-
如果您使用的是 extension_dir 那么您的 zend_extension 不应该设置为 xdebug.so,而不是完整路径吗?
-
谢谢!两种方法我都试过了,似乎都不管用。虽然现在(见编辑)我似乎有 xdebug 在命令行工作,只是不是通过我的网络服务器......
-
PHP 通过 CLI(命令行)和通过 Apache 是不同的东西,并且通过不同的文件进行配置(通常)。另外,在你的控制台中输入“which php”,试试看你是否真的在使用你安装的 PHP,而不是别的 :)
-
你说的很对,当然!似乎 PHP 的 Web 版本与 PHP 的 CLI 版本不同。由于某种原因,我使用的教程错过了我必须向 httpd.conf 添加一个 LoadModule 行。我现在已经这样做了,但是当我尝试重新加载 Apache 时收到一条错误消息:httpd:/usr/local/etc/apache2/2.2/httpd.conf 的第 118 行的语法错误:无法加载 /usr/local/ opt/php56/libexec/apache2/libphp5.so 进入服务器
-
谢谢 :) 我对 PHP FPM 一无所知,所以我使用了我熟悉的方法。我终于让它工作了!问题是我在安装 PHP 之后安装了 Apache,Apache 并没有在寻找 PHP 的 Homebrew 版本。当我重新安装 PHP 时,这是固定的。然后我通过 Homebrew 安装了 xdebug,并调整了 Listener 端口,以便它与 Komodo(我的 IDE)很好地配合。现在一切正常:)