Я работаю над проектом с несколькими разработчиками через Git, а существующая база кода использует расширение PECL YAML PHP (v1.0.1).
Я попробовал несколько шагов для установки расширения PECL YAML на моем сервере MAMP и без радости!
Я предполагаю, что другие разработчики находятся в Linux.
Первая пара попыток установки обнаружила эту ошибку в моем php_error_log:
"[16-июл-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/php 5.3/lib/php/extensions/no-debug-non-zts-20090626/yaml.so: mach-o, но неправильная архитектура в Unknown в строке 0"
После большого количества времени googling я понял, что я не одинок, и это потому, что мое расширение, которое я скомпилировал с использованием "./pecl я yaml", было 64-разрядной версией
"file yaml.so": yaml.so: 64-разрядный пакет Mach-O x86_64
Однако, сравнивая это с рабочими расширениями моей настройки MAMP, то есть "file xdebug.so":
xdebug.so: универсальный двоичный файл Mach-O с двумя архитектурами
xdebug.so(для архитектуры ppc): пакет Mach-O ppc
xdebug.so(для архитектуры i386): пакет Mach-O i386
Итак, я обнаружил несколько блогов, которые помогли мне определить точную проблему.
Невозможно запустить 64-битные расширения на 32-битном сервере MAMP - имеет смысл.
Мой процесс установки:
- скачать источник 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"
-
сделать
- копировать созданный модуль из модулей /yaml.so в MAMP:
"sudo cp modules/yaml.so/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/."
Вышеупомянутое решение, похоже, сработало для всех, кроме меня.
Мой журнал ошибок теперь сообщает об этом:
[16-июл-2011 11:09:25] PHP Предупреждение: запуск PHP: недопустимая библиотека (возможно, не библиотека PHP) 'yaml.so' в Unknown on line 0
Я потратил пару часов на это сейчас и нуждаюсь в вашей помощи.
Все, что я на самом деле пытаюсь сделать, это разобрать YAML в PHP.
У меня есть 2 варианта:
-
Исправить и выдохнуть признак облегчения
-
Вместо этого используйте класс разбора PHP YAML и избегайте этого расширения в будущем
Проблема с вариантом 2 заключается в том, что кодовая база изменится из-за моей невозможности установки расширения.
Приветствуются любые советы или решения.
Приветствия