【发布时间】:2018-03-17 13:26:36
【问题描述】:
所以 macOS High Sierra 10.13 现在带有 PHP 7.1。在配置 Apache 时,我还从 /etc/php.ini.default 文件创建了一个新的 /etc/php.ini,确保在重新启动 Apache 后检查 PHP 正在加载该文件,但是 macOS 10.13 附带的 Xdebug 扩展版本似乎没有加载或者在你运行phpinfo();时出现
我的 php.ini 肯定正在加载:
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
这是我配置 Xdebug 的 /etc/php.ini 的样子:
[xdebug]
zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
[更新,修正了这里的错字...]
但是,Xdebug 不加载并且检查 php -i 没有结果:
$php -i | grep xdebug
PHP Warning: Method xdebug_start_function_monitor() cannot be a NULL
function in Unknown on line 0
PHP Warning: xdebug: Unable to register functions, unable to load in Unknown on line 0
Segmentation fault: 11
是的,文件的路径是正确的:
$ ls /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so*
这曾经在 PHP 5 上工作,所以我希望有人可以帮助我和其他任何人在未来遇到这个问题。
当我检查我的 apache 日志时,我收到以下错误:
Failed loading /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so: dlopen(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so, 9): Symbol not found: _xdebug_monitored_function_dtor
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Expected in: flat namespace
in /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
我在找出如何解决此错误方面没有取得进展:
Symbol not found: _xdebug_monitored_function_dtor
【问题讨论】:
-
请注意,Apache 可能使用不同的 php.ini(一个 php.ini 用于 CLI/终端,一个用于 Apache/web 服务器)。所以最好检查在实际浏览器中捕获的
phpinfo()输出,以查看使用了什么 php.ini 以及是否加载了 xdebug。当然,如果它们都使用相同的 ini 文件,那么可以在终端中执行此类检查。是的 --zend_extension带有完整路径(更安全) -
谢谢,我检查了 CLI 和浏览器,它们都在加载相同的 php.ini 文件。
-
FWIW,看起来 Apple 在更新中修复了它。它适用于 macOS 10.13.6 :)
标签: php apache xdebug macos-high-sierra