Я пытаюсь установить расширение PHP intl в своей новой установке OS X 10.6.6, используя поставляемую с ним версию PHP (v5.3.3).
Я знаю, что для расширения требуется ICU, поэтому я установил его с помощью homebrew. Моя установленная версия ICU — 4.4.1 и хранится в /usr/local/Cellar/icu4c/4.4.1
.
Я пробовал два разных способа установить расширение intl:
пекл установить
pecl запросил у меня префикс ICU, который равен /usr/local/Cellar/icu4c/4.4.1
. configure
запустилась без проблем, однако make
прервалась с ошибкой:
/private/var/tmp/apache_mod_php/apache_mod_php-53~1/Build/tmp/pear/temp/intl/collator/collator_class.c:107: ошибка: дублировать «статический» make: * [ collator/collator_class.lo] Ошибка 1 ОШИБКА: `make' не удалось
строить напрямую
Я скачал текущую версию PHP (v5.3.5), а затем установил расширение intl из ext/intl
, запустив:
phpize &&
configure --enable-intl --with-icu-dir=/usr/local/Cellar/icu4c/4.4.1 &&
make &&
make test &&
sudo make install
Это, казалось, сработало; Я получил расширение в каталоге расширений PHP и не получил никаких сообщений об ошибках.
Файл говорит мне: Mach-O 64-битный пакет x86_64
Однако, когда я загрузил расширение в php.ini
, я получил сообщение:
Предупреждение PHP: запуск PHP: недопустимая библиотека (возможно, не библиотека PHP) '/usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so' в неизвестном, строка 0
Я понятия не имею, почему это происходит. Я предполагаю, что это связано с тем, что расширение установлено из PHP версии 5.3.5, а я использую версию 5.3.3, но я не могу представить, что два выпуска исправлений нарушат совместимость.
Любые идеи?
ОБНОВЛЕНИЕ 2011-03-16:
Я нашел решение! Когда я явно устанавливаю флаг -m64
в configure (который указывает gcc создавать 64-битный код), тогда расширение загружается правильно:
CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure