加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP 7在macOS 10.13上进行Xdebug

发布时间:2020-12-13 13:07:31 所属栏目:PHP教程 来源:网络整理
导读:所以macOS High Sierra 10.13现在配备了 PHP 7.1.配置Apache时,我还从/etc/php.ini.default文件中创建了一个新的/etc/php.ini,确保在重新启动Apache后检查是否正由PHP加载,但是随附的Xdebug扩展的版本运行phpinfo()时,似乎无法加载或显示macOS 10.13; 我的ph
所以macOS High Sierra 10.13现在配备了 PHP 7.1.配置Apache时,我还从/etc/php.ini.default文件中创建了一个新的/etc/php.ini,确保在重新启动Apache后检查是否正由PHP加载,但是随附的Xdebug扩展的版本运行phpinfo()时,似乎无法加载或显示macOS 10.13;

我的php.ini肯定被加载:

$php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

这是我的/etc/php.ini在配置Xdebug时的样子:

[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
好的,所以我终于让它自己运行它完美无缺!我假设macOS High Sierra附带的xdebug二进制文件(见于:/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so)与PHP7的新Zend引擎不兼容.

所以我从xdebug website下载了最新的源代码并执行了以下操作:

>用brew安装autoconf;
>运行phpize配置新Zend引擎的构建;
>运行./configure
>运行make

现在新的二进制文件位于modules / xdebug.so下

但是,macOS系统完整性保护(SIP)将阻止您覆盖/usr/lib / php / extensions /下的xdebug.so.我不想禁用它,所以我在/usr/local / lib / php / extensions /下创建了一个新的目录路径,并将新的二进制文件复制到这个位置.我不确定这个目录是否是放置它的最佳位置,或者这是不好的做法,但它对我有用.

最后我重新配置我的php.ini以使用新的二进制文件,一切都运行完美!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读