来自PHP 5.6 / FreeBSD

时间:2016-03-14 16:24:00

标签: php openssl freebsd

无法从端口获取OpenSSL以在PHP中工作。 FreeBSD 9.1。

php -i显示:

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 0.9.8x 10 May 2012
OpenSSL Header Version => OpenSSL 1.0.2g  1 Mar 2016

基础系统openssl:

# /usr/bin/openssl version
OpenSSL 0.9.8x 10 May 2012

Ports openssl:

# /usr/local/bin/openssl version

    WARNING: can't open config file: /usr/local/openssl/openssl.cnf
    OpenSSL 1.0.2g  1 Mar 2016

模块似乎与正确的库相关联:

# ldd /usr/local/lib/php/20131226-zts/openssl.so
/usr/local/lib/php/20131226-zts/openssl.so:
    libssl.so.8 => /usr/local/lib/libssl.so.8 (0x801224000)
# strings /usr/local/lib/libssl.so.8 | grep OpenSSL
OpenSSLDie
SSLv2 part of OpenSSL 1.0.2g  1 Mar 2016
SSLv3 part of OpenSSL 1.0.2g  1 Mar 2016
TLSv1 part of OpenSSL 1.0.2g  1 Mar 2016
DTLSv1 part of OpenSSL 1.0.2g  1 Mar 2016
OpenSSL 1.0.2g  1 Mar 2016

需要帮助解释为什么php -i显示OpenSSL Library Version => OpenSSL 0.9.8x

1 个答案:

答案 0 :(得分:0)

浏览PHP源代码显示库版本是通过函数调用获得的:

php_info_print_table_row(2, "OpenSSL Library Version", SSLeay_version(SSLEAY_VERSION));

标题版本是一个预处理器常量,它被编译到扩展名中:

php_info_print_table_row(2, "OpenSSL Header Version", OPENSSL_VERSION_TEXT);

你可能已经更新了openssl端口,得到了一个新版本的库,并且因为它的ABI没有改变,一切都适合你。但由于您没有重新编译扩展本身,OPENSSL_VERSION_TEXT常量具有旧标头的值。

如果您真的担心这个问题,可以重建php56-openssl端口,但由于维护人员在openssl更新期间没有碰到它,我认为这是无害的。