OpenSSL не указан в модулях PHP, но отображается в команде настройки

PHP 5.2.12
OS X 10.5.8

Если я скомпилирую PHP из исходного кода с помощью следующей команды configure

./configure --disable-all --with-openssl=shared,/opt/local

это удается. Однако после make и make install,

php -m

не перечисляет модуль openssl.

Основываясь на том, что я прочитал, я думаю, что это может быть связано с многократными установками библиотеки openssl. Установка последней версии openssl из исходного кода и попытка указать путь в команде конфигурации --with-openssl=/usr/local всегда приводит к следующей ошибке:

Undefined symbols:
  "_EVP_CIPHER_CTX_block_size", referenced from:
      _zif_openssl_seal in openssl.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1

Я пробовал несколько разных вариантов пути, но безуспешно.

На основе http://blog.yimingliu.com/2009/02/24/missing-library-symbols-while-compiling-php-528/, я также пытался отредактировать Makefile, чтобы MH_BUNDLE_FLAGS стоял позже в строке компиляции.

Потратив добрую часть дня на эту проблему, я в растерянности.

Какие-либо предложения?

В идеале я хотел бы использовать скомпилированную и самую последнюю версию OpenSSL. Но на данный момент я готов принять все, что работает.


person Lauren    schedule 03.04.2010    source источник


Ответы (1)


Дух. Конечно, php -m не стал бы перечислять модуль. Он указан как «общий». Да, я не очень хорошо разбираюсь в компиляции из исходников.

Мое решение состояло из

./configure
--disable-all \
--prefix=/usr/local \
--with-openssl=shared,/usr \
--with-config-file-scan-dir=/etc
...<snip>

затем добавление

extension=openssl.so

to /etc/php.ini

Перезапустил apache и теперь все работает как надо.

person Lauren    schedule 03.04.2010