【问题标题】:Error to Install xdebug on Mac OS with php 8使用 php 8 在 Mac OS 上安装 xdebug 时出错
【发布时间】:2021-01-21 19:55:23
【问题描述】:

我只想先为我的项目做phpunit --coverage我得到了这个错误:

PHPUnit 9.5.0 by Sebastian Bergmann and contributors.

Warning:       No code coverage driver available

我只是通过php -v检查我的php以确保我有xdebug

PHP 8.0.0 (cli) (built: Nov 30 2020 13:51:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies

似乎我没有它然后我只是通过pecl install xdebug Homebrew 安装它我在安装结束时收到此错误:

........

Build process completed successfully
Installing '/usr/local/Cellar/php/8.0.0_1/pecl/20200930/xdebug.so'

Warning: mkdir(): File exists in System.php on line 294

Warning: mkdir(): File exists in /usr/local/Cellar/php/8.0.0_1/share/php/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php/8.0.0_1/pecl/20200930

【问题讨论】:

    标签: php laravel unit-testing xdebug


    【解决方案1】:

    您可以通过开始检查 /usr/local/Cellar/php/8.0.0_1 正在运行的文件夹中的内容来逐步调试此问题

    $ cd /usr/local/Cellar/php/8.0.0_1
    $ la -la
    

    我倾向于说pecl 符号链接已经存在,这就是pecl 无法在那里创建文件夹的原因。

    然后您应该通过运行which pecl 来检查pecl 的安装位置,理想情况下,/usr/local/bin/pecl 应该指向某个位置/usr/local/Cellar/php/8.0.0_1/bin/pecl

    如果是这种情况,您可以删除 /usr/local/Cellar/php/8.0.0_1/pecl 符号链接

    $ rm /usr/local/Cellar/php/8.0.0_1/pecl
    

    并尝试重新安装 xdebug。

    现在修复image not found 问题

    这来自于 xdebug 安装期间的错误配置。

    首先,通过运行ˋphp —-iniˋ检查php.ini文件的路径。 然后打开文件并检查第一行是否加载了您的 xdebug 扩展。如果是,请将其删除。然后在conf.d文件夹中添加一个文件xdebug.conf,并添加如下内容:

    ;XDebug
    zend_extension="/usr/local/Cellar/php/8.0.0/pecl/CHANGEME/xdebug.so"
    xdebug.remote_autostart=1
    xdebug.remote_port=9000
    xdebug.remote_enable=1
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="/tmp"
    
    

    请检查您的 xdebug.so 文件的路径是否正确,并且输出目录是否存在。

    【讨论】:

    • 非常感谢我刚刚删除了 pecl 然后重新安装它现在安装了,但是当我运行 php -v 时出现奇怪的错误:Warning: Failed loading Zend extension 'xdebug.so' (tried: /usr/local/lib/php/pecl/20200930/xdebug.so (dlopen(/usr/local/lib/php/pecl/20200930/xdebug.so, 9): image not found), /usr/local/lib/php/pecl/20200930/xdebug.so.so (dlopen(/usr/local/lib/php/pecl/20200930/xdebug.so.so, 9): image not found)) in Unknown on line 0 PHP 8.0.0 (cli) (built: Nov 30 2020 13:51:52) ( NTS )
    • 我更新了我的答案来描述你下一个问题的解决方案
    • 当我运行cd /usr/local/Cellar/php/8.0.0/pecl 以确保我得到这个cd: no such file or directory: /usr/local/Cellar/php/8.0.0/pecl 的文件夹编号经过一番搜索后,我在这条路径xdebug.so 中找到了xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so 是正确的吗?
    • 这个答案效果很好。我必须做的唯一更改是确保使用 .ini 扩展名命名 xdebug.conf 文件。
    • 由于这篇文章中的错误,我也无法使用 pecl 安装 xdebug。当我按照这个答案的建议检查了哪个 pecl 时,我发现我的 php 安装中的 pecl 不是符号链接。我通过卸载和安装 php 然后用 pecl 安装 xdebug 来解决这个问题。
    【解决方案2】:

    我刚刚删除了符号链接rm /opt/homebrew/Cellar/php/8.0.8_1,然后再次重新安装了mongodb sudo pecl install mongodb

    但我在加载 mongodb.so 时仍然收到 PHP 警告,所以我编辑了 php.ini 文件,如下所示:

    extension="/opt/homebrew/Cellar/php/8.0.8_1/pecl/20200930/mongodb.so"
    

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2014-12-03
      • 2018-09-22
      • 2019-05-27
      • 2014-09-21
      • 2015-12-10
      • 2016-02-18
      • 2011-05-16
      • 2012-01-14
      相关资源
      最近更新 更多