Требуется объяснение относительно расширений PHP

Вот краткий обзор:

Я только что закончил компилировать PHP 5.3.5 и попытался скомпилировать "--with" с рядом различных расширений. Среди расширений, которые мне нужны, есть mbstring и intl. Я могу вручную phpize, configure, make, make install расширение mbstring, и, похоже, оно работает нормально. Однако я не могу сделать то же самое для intl.

Моя строка ./configure выглядит так:

./configure --with-openssl --with-pcre-regex --enable-calendar
            --with-curl --enable-exif --enable-ftp --with-gd
            --with-mhash --enable-mbstring --with-mysql --enable-zip
            --enable-intl --with-icu-dir=...

Код компилируется без проблем: ./configure... make, make install

Я использовал php.ini-production для своей конфигурации php.ini и настроил Apache для использования php-cgi для определенного домена, и это тоже хорошо работает.

Быстрый:

<?php phpinfo() ?>

показывает, что на самом деле я использую более новую версию PHP. Однако расширения, указанные в строке "./configure...", нигде не отображаются на информационной странице PHP.

После небольшого поиска я обнаружил, что могу запустить phpize для одного расширения в исходной папке PHP, затем скомпилировать сборку определенного модуля и установить его в каталог расширений PHP. После добавления:

extension=MY_EXT

в моем php.ini расширение появилось на моей странице phpinfo().

Итак, кто-нибудь может объяснить, почему --with-mbstring не влияет на мою компиляцию?

У меня не было проблем с компиляцией для расширения intl, но перемещение файла intl.so в мой каталог расширений PHP и добавление строки расширения в мой php.ini не дало никакого эффекта.


person Tanner Perrien    schedule 31.01.2011    source источник
comment
кто-нибудь может объяснить, почему --with-mbstring не действует. ты имеешь в виду --enable-intl?   -  person brian_d    schedule 01.02.2011
comment
Я опечатался и на самом деле хотел поставить --enable-EXT_NAME (как указано в моем блоке кода). Однако, если оставить в стороне расширение intl, даже когда я использую --enable-mbstring, это расширение не скомпилировано/установлено/включено. Только когда я вручную соберу его и установлю, я получу поддержку и увижу, что он включен.   -  person Tanner Perrien    schedule 01.02.2011


Ответы (1)


Из php.net вы пробовали

Если ваш ICU установлен в нестандартный каталог, вы можете указать его местоположение в переменной среды LD_LIBRARY_PATH, чтобы динамический компоновщик мог его найти: $ export LD_LIBRARY_PATH=/opt/icu/lib

В противном случае, если PHP и ICU установлены в места по умолчанию, дополнительные параметры для настройки не нужны.

person brian_d    schedule 31.01.2011
comment
Я помню, что видел этот блок, но теперь, когда я перечитал его снова, я понимаю, что это, вероятно, проблема. По какой-то причине, когда я пробежался по нему раньше, я подумал, что это относится к конфигурации, связанной с компиляцией. - person Tanner Perrien; 01.02.2011
comment
Я установил переменную среды LD_LIBRARY_PATH, а ЗАТЕМ скомпилировал расширение intl. Это сделало трюк! Это не объясняет, почему я не могу собрать php с уже включенными расширениями, но, по крайней мере, я знаю один способ заставить его работать. - person Tanner Perrien; 01.02.2011