1

PHP 5.2.12
OS X 10.5.8

次の構成コマンドを使用してソースから PHP をコンパイルすると、

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

それは成功します。ただし、 と のmakemake 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/に基づいて 、コンパイル行の後半に MH_BUNDLE_FLAGS が来るように Makefile を編集してみました.

この問題にかなりの時間を費やした後、私は途方に暮れています。

助言がありますか?

理想的には、コンパイル済みの最新バージョンの OpenSSL を使用したいと考えています。しかし、現時点では、うまくいくものは何でも喜んで受け入れます。

4

1 に答える 1

1

当たり前。もちろん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を再起動すると、すべてが正常に機能するようになりました。

于 2010-04-03T06:06:54.453 に答える