我正在与许多开发人员通过 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:mach-o,但第 0 行的 Unknown 中的架构错误“
经过大量时间谷歌搜索后,我意识到我并不孤单,这是因为我使用“./pecl i yaml”编译的扩展是 64 位版本
“文件 yaml.so”:yaml.so:Mach-O 64 位捆绑包 x86_64
但是,将此与我的 MAMP 设置上的工作扩展(即“文件 xdebug.so”)进行比较:
xdebug.so:具有 2 个架构的 Mach-O 通用二进制文件
xdebug.so(用于架构 ppc):Mach-O 捆绑 ppc
xdebug.so(用于架构 i386):Mach-O 捆绑 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 模块/yaml.so /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/。”
上述解决方案似乎对我以外的所有人都有效。
我的错误日志现在报告这个:
[2011 年 7 月 16 日 11:09:25] PHP 警告:PHP 启动:第 0 行的未知库(可能不是 PHP 库)“yaml.so”无效
我现在已经花了好几个小时了,需要你的帮助。
我实际上要做的就是在 PHP 中解析 YAML。
我有两个选择:
修好它,然后呼吸一下解脱的迹象
改用 PHP YAML 解析类,以后避免使用此扩展
选项 2 的问题是,由于我无法安装扩展,代码库会发生变化。
任何建议或解决方案将不胜感激。
干杯