macOS High Sierra下Xdebug.so安装运行失败求助
问题原因与解决方案
出现Symbol not found: _zend_post_startup_cb错误的核心原因是Xdebug版本与PHP 7.2不兼容:_zend_post_startup_cb是PHP 7.3及以上版本才引入的Zend API符号,而Xdebug 3.1及以后的版本不再支持PHP 7.2,若安装了过高版本的Xdebug,就会触发这个符号缺失的问题。
具体解决步骤:
卸载当前不兼容的Xdebug版本
执行命令彻底移除现有Xdebug:pecl uninstall xdebug如果提示找不到xdebug,也可以直接删除对应的
.so文件:rm /usr/local/lib/php/pecl/20180731/xdebug.so安装适配PHP 7.2的Xdebug版本
PHP 7.2对应的Xdebug最高兼容版本是3.0.x系列,执行以下命令指定版本安装:pecl install xdebug-3.0.4注:安装过程中如果提示是否更新
php.ini,选择no即可,因为我们已经有单独的99-xdebug.ini配置文件修正配置文件中的语法错误
打开你的99-xdebug.ini,去掉每个配置项末尾多余的分号(分号是PHP配置的注释符号,会导致配置值被截断),修正后的内容如下:;Xdebug zend_extension="/usr/local/lib/php/pecl/20180731/xdebug.so" xdebug.client_host=127.0.0.1 xdebug.client_port=9003 xdebug.start_with_request=yes xdebug.discover_client_host=1 xdebug.default.idekey=PHPSTORM xdebug.mode=debug xdebug.profiler_output_dir="/Users/marcellopato/xdebugtmp/" xdebug.show_local_vars=1补充:Xdebug 3.x中
remote_connect_back和remote_enable已被废弃,建议替换为xdebug.discover_client_host=1以适配新版本规范重启Valet并验证
执行命令重启Valet使配置生效:valet restart然后验证Xdebug是否加载成功:
valet php -v如果输出中包含Xdebug的版本信息,说明安装成功;也可以用
valet php -m查看已加载的模块列表,确认xdebug存在。
额外注意事项:
- 确保编译Xdebug时使用的是Valet当前的PHP 7.2环境,先执行
valet use php@7.2切换到对应版本后再安装,避免用错PHP编译环境。 - macOS High Sierra的系统PHP版本可能较旧,不要混淆系统PHP和Valet的PHP环境,所有操作都要基于Valet的PHP 7.2。
内容的提问来源于stack exchange,提问作者Marcello Pato
相关产品推荐
相关产品推荐

