【发布时间】:2021-11-01 14:47:16
【问题描述】:
我正在与许多开发人员通过 Git 开展一个项目,现有代码库使用 PECL YAML PHP 扩展 (v1.0.1)。
我已经尝试了许多步骤来在我的 MAMP 服务器上安装 PECL YAML 扩展,但没有任何乐趣!
我假设其他开发人员都在 Linux 上。
第一次安装尝试在我的 php_error_log 中发现了这个错误:
"[16-Jul-2011 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 modules/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 的问题是,由于我无法安装扩展,代码库会发生变化。
任何建议或解决方案将不胜感激。
干杯
【问题讨论】:
-
编辑问题使其更具可读性。
-
这个运气好吗?我在尝试在 MAMP 环境中安装 yaml.so 时遇到了同样的问题。
-
我知道这可能不是您想听到的答案,但我建议使用 PHP 和 Apache 的 MacPorts 版本。
-
我在 Mamp 和 Xampp(mac 版)上安装扩展时总是遇到麻烦。我最终运行了一个 linux vm 来解决这个问题(Turnkey Linux - Lamp Stack 效果很好)
标签: php yaml mamp configure pecl