OpenSSL отсутствует в списке модулей PHP, но отображается в команде настройки - PullRequest
1 голос
/ 03 апреля 2010

PHP 5.2.12
OS X 10.5.8

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

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

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

php -m

не не выводит список модуля openssl.

Исходя из того, что я прочитал, я думаю это может быть связано с несколькими установками библиотеки openssl. Установка последней версии openssl из исходного кода и попытка указать путь в команде configure --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. Но на данный момент я готов принять все, что работает.

1 Ответ

1 голос
/ 03 апреля 2010

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

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

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

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

extension=openssl.so

до /etc/php.ini

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

...