Столкнулся с необходимостью добавить к PHP в макоси несколько экстеншенов.
Апач в MacOS работает в x86_64. Да-да, там бинарник для нескольких архитектур:
Проблема в том что по умолчанию экстеншены будут собираться под i386. И потому из php-cli они доступны и работают, в то время как в mod_php их нет, а в логах апача видно примерно такое:
Для сборки под несколько архитектур надо собирать все зависимости также под несколько архитектур. Я решил ограничиться вариантом x86_64 и i386.
Итак, в /opt/local/etc/macports/macports.conf добавим требуемые архитектуры:
Чудесно. Теперь на примере gettext.
file `which gettext`
В качестве вывода мы должны получить что-то вроде
/opt/local/bin/gettext: Mach-O universal binary with 2 architectures
/opt/local/bin/gettext (for architecture i386): Mach-O executable i386
/opt/local/bin/gettext (for architecture x86_64): Mach-O 64-bit executable x86_64
Далее нужны сорсы php. В сорсах есть папка ext.
phpize
CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" \
CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" \
CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" \
LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" \
./configure --with-gettext=/opt/local
make
sudo make install
sudo echo 'extension=gettext.so' >> /etc/php.ini
sudo apachectl restart
Предварительно убедитесь, что у Вас есть файл /etc/php.ini. По умолчанию его нет.
После этого модуль должен завестись в mod_php.
UPD: а чобы (по возможности) все из портов собиралось с флагом universal надо сделать