在MAMP上安装YAML Pecl PHP扩展

Min*_*lip 11 php yaml mamp configure pecl

我正在与Git上的许多开发人员合作开发一个项目,现有的代码库使用PECL YAML PHP扩展(v1.0.1).

我已经尝试了许多步骤在我的MAMP服务器上安装PECL YAML扩展,并且没有任何乐趣!

我假设其他开发人员在Linux上.

安装中的前几次尝试在我的php_error_log中显示此错误:

"[2011年7月16日11:29:13] PHP警告:PHP启动:无法加载动态库'/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts- 20090626/yaml.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/yaml.so,9):找不到合适的图像.找到了:/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/yaml.so:macho-o,,,,,,,,,,,,,,,,

经过大量的时间谷歌搜索后,我意识到我并不孤单,这是因为我使用"./pecl i yaml"编译的扩展名是64位版本

"file yaml.so":yaml.so:Mach-O 64位包x86_64

但是,将此与我的MAMP设置上的工作扩展进行比较,即"file xdebug.so":

xdebug.so:具有2个架构的Mach-O通用二进制文件
xdebug.so(用于架构ppc):Mach-O bundle ppc
xdebug.so(用于架构i386):Mach-O bundle i386

所以我发现了一些帮助我确定确切问题的博客.

无法在32位MAMP服务器上运行64位扩展 - 这是有道理的.

我的安装过程是:

  • 下载PECL YAML源码
  • 将tar和cd提取到模块源中
  • phpize里面的模块目录
  • 使用博客中的命令运行.configure:

    "CFLAGS =' - O3 -fno-common -arch i386 -arch x86_64 -g -Os'LDFLAGS =' - O3 -arch i386 -arch x86_64'CXXFLAGS =' - O3 -fno-common -arch i386 -arch x86_64 -g -Os'./configure --disable-dependancy-tracking --disable-shared -enable-static"

  • 使

  • 将创建的模块从modules/yaml.so复制到MAMP:

    "sudo cp modules/yaml.so /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/."

除了我之外,上述解决方案似乎对所有人都有效.

我的错误日志现在报告:

[16-Jul-2011 11:09:25] PHP警告:PHP启动:无效的库(可能不是PHP库)'yaml.so'在第0行的Unknown中

我现在花了好几个小时就需要你的帮助.

我实际上要做的就是用PHP解析YAML.

我有2个选择:

  1. 修复它并呼吸一种缓解的迹象

  2. 请改用PHP YAML解析类,以后再避免使用此扩展

选项2的问题是由于我无法安装扩展程序,代码库会发生变化.

任何建议或解决方案将不胜感激.

干杯

Rif*_*fat 17

如果您安装了Homebrew,那么您可以:

brew install libyaml --universal
Run Code Online (Sandbox Code Playgroud)

否则安装最新的libyaml.

您可以通过设置CFFLAGSLDFLAGS来构建32位和64位Intel -arch i386 -arch x86_64.

然后,安装PEAR/PECL(您也可以按照此处的说明操作)

wget http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar
Run Code Online (Sandbox Code Playgroud)

默认情况下,它将安装在~/pear/目录中.现在跑

sudo ~/pear/bin/pecl install yaml
Run Code Online (Sandbox Code Playgroud)

然后,处理so文件.


这篇好文章将演示如何手动安装MAMP堆栈.


Mac*_*n13 3

嗯,这并不能真正解决你的问题。但如果你只想解析 YAML,我建议使用Symfony YAML 类,它是一个非常易于使用的用于解析 YAML 的类。速度还可以,错误信息也很清楚。

是的,它会改变代码库,但这并不是一件坏事。我认为,当您可以避免使用这样的 PECL 扩展时,这是一个优点,因为您现在遇到的问题,如果您需要切换到其他服务器,您会很高兴您不必检查/安装 25 个 PECL 扩展(及其正确版本)。

所以我的建议是,切换到 YAML 类。这将使生活更轻松!:)