【问题标题】:PHP Xdebug on OS X 10.9 MavericksOS X 10.9 Mavericks 上的 PHP Xdebug
【发布时间】:2013-11-03 22:55:53
【问题描述】:

安装 OS X 10.9 Mavericks 后,我在 OS X 上设置 PHP 开发环境时遇到问题。

这是我用来安装的命令。

sudo pecl install xdebug

downloading xdebug-2.2.3.tgz ...
Starting to download xdebug-2.2.3.tgz (250,543 bytes)
.....................................................done: 250,543 bytes
66 source files, building
running: phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

有人有解决方案或变通方法吗?

【问题讨论】:

  • 你好像没有安装php dev包
  • 我能够通过向 php 库添加符号链接来解决最初的几个错误。但是现在我仍然需要解决这个错误。找不到自动配置。请检查您的 autoconf 安装和 $PHP_AUTOCONF 环境变量。
  • brew install autoconf

标签: php xdebug osx-mavericks


【解决方案1】:

对于遇到此问题的任何人,我必须从源代码构建 autoconf。我从另一个 StackOverflow 问题中遵循了这个答案。

https://stackoverflow.com/a/12333230/2272004

【讨论】:

  • 按照那里的说明,我通过了那个错误,但是,1 error generated. make: *** [xdebug.lo] Error 1 ERROR: make' failed` - 我得到了这个。没有骰子。
  • 这可能会有所帮助。 remonpel.nl/2013/10/… 我确实必须创建一些库的软链接来构建 xdebug
  • @谢谢。最后,我发现 MAMP PRO 是自带 Xdebug 的。这只是取消注释 php ini 行的问题。无论如何,谢谢。
【解决方案2】:

这里有两个问题。首先是需要安装Xcode命令行工具,命令如下:

xcode-select --install

这意味着以前在/usr/include/php/ 中找不到的文件将可用。

下一步是安装autoconf,方法与Ares在his answer中显示的一样。

我会先cd 进入你的下载文件夹

cd ~/Downloads/
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
tar xzf autoconf-latest.tar.gz
cd autoconf-*
./configure --prefix=/usr/local
make
sudo make install

现在您可以运行pecl install 命令

sudo pecl install xdebug

【讨论】:

  • 我建议使用 Brew 来安装 autoconf,而不是从源代码编译——“brew install automake”
  • 只是想说,在尝试按照本教程通过重新编译 php 版本 5.4.17(MacOSX Mavericks (10.9) 附带)来安装 mcrypt 模块时,此步骤是必要的:coolestguidesontheplanet.com/…跨度>
【解决方案3】:

不知道如何使用pecl。如果没有pecl,在 OS X 安装后获取 Xdebug 非常简单。您有两个简单的选择:

  1. 使用已在以下位置提供的版本:

    /usr/lib/php/extensions/no-debug-non-zts-2010052/xdebug.so
    
  2. 构建你自己的:

    1. 确保您拥有 Xcode CLI 工具:xcode-select --install 将提示您安装 CLI 工具。安装好 CLI 工具后,/usr/include/php 内应该有内容。

    2. 转到 http://xdebug.org/download.php 并下载所需 Xdebug 版本的源代码压缩包。例如:http://xdebug.org/files/xdebug-2.2.3.tgz

    3. 将压缩包和cd 解压到它创建的目录中。在该目录中,您会看到README。从这里是:

      $ phpize
      Configuring for:
      PHP Api Version:         20100412
      Zend Module Api No:      20100525
      Zend Extension Api No:   220100525
      $ ./configure --enable-xdebug
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for a sed that does not truncate output... /usr/bin/sed
      [... output ...]
      $ make
      [... output ...]
      

您构建的xdebug.so 现在位于modules/xdebug.sophpize 对安装 XCode CLI 工具至关重要,因为 phpize 为您的 PHP 版本设置构建参数。

使用上面 (1) 或 (2) 中的 xdebug.so,您可以将此块添加到您的 phpphp-fpm 正在使用的 php.ini

[Xdebug]
zend_extension=<full_path_to_xdebug.so>
xdebug.remote_enable=1
xdebug.remote_host=<host running PHP (e.g. localhost)>
xdebug.remote_port=<port Xdebug tries to connect to on the host running PHP (default 9000)>

【讨论】:

  • 除了 .so 路径的非常小的细节是 /usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so 这就像一个魅力。我采取了简单的方法,甚至没有费心构建自己的方法。
  • zend_extension 不适用于全新安装。工作正常,扩展。仅当未使用 extension_dir 时才使用完整路径。最好的使用方式并将所有扩展都放在那里。
  • 如果我使用 xdebug.so 中内置的 XCode,我会收到 Xdebug requires Zend Engine API version 220100525. The Zend Engine API version 220121212 which is installed, is newer. 错误。所以我必须为 XAMPP 1.8.3-4 构建自己的。
【解决方案4】:

快速复制粘贴方式

sudo sh -c 'echo zend_extension=$(find /usr/lib/php/extensions -name "xdebug.so") >> $(php -qr "echo php_ini_loaded_file();") && apachectl restart'

此命令执行以下操作:

  • 找到 Xcode 自带的原生 Xdebug 扩展
  • 询问php加载了哪个配置文件
  • 在配置文件中添加 Xdebug 扩展路径
  • 重新启动 apache。

通过捆绑的 apache 与 Sierra、El Capitan 和 Yosemite 兼容,但未经 MAMP 和 XAMPP 测试。

在启动命令之前,请确保已安装 Xcode 命令行工具:xcode-select --install

【讨论】:

  • 在优胜美地确认。谢谢!
  • 在 Mavericks 上得到确认,虽然起初没有加载 php.ini 文件。不得不重命名 /etc/php.ini.default 然后它工作。谢谢
  • @user2070775 尝试将/etc/php.ini.default 重命名为/etc/php.ini
  • 对于 MAMP:取消注释 ini 文件中的 xdebug(您可以通过查看 phpinfo() 找到哪个路径)
  • 完美运行。确保你有一个 php.ini。
【解决方案5】:

对于phpize error的问题,试试这个可以解决你的问题: sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include

【讨论】:

  • 在 OS X 10.10 上为我工作(我在路径中使用了 MacOSX10.10)。谢谢!
  • 这才是这个问题的真正答案!!!不适用于how to install xdebug on OS X 10.10
【解决方案6】:

如果您使用的是 Mac Yosemite 10.10,并且以上答案均未解决问题。执行以下操作:

  1. 打开一个终端

  2. 执行find /usr/lib/php/extensions -name "xdebug.so"可以知道调试库的路径。

  3. 执行sudo nano /etc/php.ini打开并编辑php.ini文件
  4. 在 php.ini 的末尾添加以下行

    [XDebug]
    zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"
    xdebug.remote_enable=1
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=127.0.0.1
    xdebug.remote_port=9000
    

(完成后,输入control+o 保存,control+x 关闭文件)

(不要忘记将 zend_extension 中的值替换为您从第一个终端命令获得的任何值)

  1. 执行sudo apachectl restart加载新配置
  2. 高枕无忧

【讨论】:

  • 我只看到php.ini.default 并且修改它并没有改变我的环境
  • @Erik 您是否将配置保存到php.iniphp.ini.default
  • 我都试过了... Php.ini 修复了一段时间然后它停止在 phpstorm 中工作
  • @Erik 抱歉我不熟悉 phpstorm
  • 在第 2 步之后我做了sudo cp /etc/php.ini.default /etc/php.ini(我在优胜美地),然后继续进行第 3 步。一切都很好。谢谢!
【解决方案7】:

我必须 brew install xdebug 并选择我的 PHP 版本,它成功了! 例如,

brew install homebrew/php/php56-xdebug

对于 PHP 5.6 版本。

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2013-11-11
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多