Zend-Server 8.5,无法为 PHP 更新 OpenSSL
Zend-Server 8.5, not managed to update OpenSSL for PHP
确实对该主题进行了广泛调查,但仍无法强制 OpenSSL
的新版本在 OSX El Capitan 上与 ZendServer v.8.5.2 一起工作。
Prehistory:默认情况下,ZendServer 和 El Capitan 似乎与 openssl-0.9.8zc 一起使用。 PHP 5.6.15 的新版本不能正常使用此版本的 OpenSSL 和 Composer-PHP。我遇到错误:
Unable to locate a valid CA certificate file. You must set a valid 'cafile' option.
A valid CA certificate file is required for SSL/TLS protection.
...
[Composer\Downloader\TransportException]
The configured cafile was not valid or could not be read.
我用 Brew 更新了 OpenSSL 的版本,然后确保它在系统中正确注册:
brew unlink openssl && brew link --force openssl
但实际上,ZendServer 似乎在二进制文件目录中拥有自己的 openssl 库本地副本:
/usr/local/zend/bin/openssl
openssl.cafile
是空的,所以我决定将它指向新路径,正如某些教程中所推荐的那样:usr/local/etc/openssl/cert.pem
结果:
系统似乎指向正确版本的 openssl:
$ openssl version
OpenSSL 1.0.2f 28 Jan 2016
$ openssl version -d
OPENSSLDIR: "/usr/local/etc/openssl"
同时which
指向zend的OpenSSL版本:
$ which -a openssl
/usr/local/zend/bin/openssl
/usr/local/bin/openssl
/usr/bin/openssl
和PHP它似乎仍然有旧的默认配置,通过我的系统中不再存在的路径:
$ php -i | grep openssl
Configure Command => './configure' '--prefix=/usr/local/zend' '--with-config-file-path=/usr/local/zend/etc' '--with-config-file-scan-dir=/usr/local/zend/etc/conf.d' '--disable-debug' '--enable-inline-optimization' '--disable-all' '--enable-libxml' '--enable-session' '--enable-spl' '--enable-xml' '--enable-hash' '--enable-reflection' '--with-pear' '--with-apxs2=/usr/local/zend/apache2/bin/apxs' '--with-layout=GNU' '--enable-filter' '--with-pcre-regex' '--with-zlib' '--enable-simplexml' '--enable-dom' '--with-libxml-dir=/usr/local' '--with-openssl=/usr/local/openssl-0.9.8zc' '--enable-pdo' '--with-pdo-sqlite' '--with-pdo-mysql=mysqlnd' '--with-libedit' '--with-pdo-pgsql' '--with-iconv' '--with-sqlite3' '--disable-phar' '--enable-xmlwriter' '--enable-xmlreader' '--enable-mysqlnd' '--enable-json' 'CC=gcc' 'CFLAGS=-fPIC '-O2' '-pipe' '-g' '-fno-common' '-g'' 'CPPFLAGS=-fPIC 'CXXFLAGS=-fPIC 'CXX=g++' 'LDFLAGS='
openssl
Openssl default config => /usr/local/openssl-0.9.8zc/ssl/openssl.cnf
openssl.cafile => /usr/local/etc/openssl/cert.pem => /usr/local/etc/openssl/cert.pem
openssl.capath => no value => no value
我还没有找到任何方法来更改 Zend Server 8.5.2 中 PHP 的默认 Zend OpenSSL 配置,并指出它到 OSX.
中的新 OpenSSL
Composer 仍然抛出同样的错误并且不起作用。
我在这里和那里爬了 Whosebug,还没有找到适合我的解决方案。任何帮助将不胜感激。
谢谢!
我自己的回答:看起来,当PHP被编译时,那些库被内置到PHP中,所以升级SSL lib文件不会'没有任何效果 除非 PHP 被重新编译 。在我看来,没有办法更新 ZendServer 中的 OpenSSL 库,除非下载更新的版本(没有更新的版本)。
经过几天的调查,似乎没有办法在 ZendServer 中更新 OpenSSL for PHP -编译 PHP 和库。所以这个问题似乎无法回答。没有简单的方法来做到这一点。您仍将拥有 OpenSSL 的系统版本,它与使用 PHP.
预编译的版本不同
我放弃了在 ZendServer 中为 PHP 升级 OpenSSL 的想法,因为它内置于 PHP 本身。相反,我回滚了我的配置和 ZendServer 设置,因此它至少以某种方式与旧版本的 OpenSSL 一起工作。
它在某些情况下也可能有帮助,无需重新安装:to manually update certificates
- 已从 http://curl.haxx.se/ca/cacert.pem
下载 cacert.pem
- 复制
cacert.pem
到'/usr/local/zend/etc/ssl/certs/'
- 修改CURL配置(Zend Server Configuration -> PHP -> CURL)并更改:
curl.cainfo = '/usr/local/zend/etc/ssl/certs/cacert.pem'
- 重新启动 PHP 并检查 CURL 是否可以从 HTTPS URL.
读取
可以在文章中找到更多信息 Fixing the expired intermediate certificate on Mac OS X
确实对该主题进行了广泛调查,但仍无法强制 OpenSSL
的新版本在 OSX El Capitan 上与 ZendServer v.8.5.2 一起工作。
Prehistory:默认情况下,ZendServer 和 El Capitan 似乎与 openssl-0.9.8zc 一起使用。 PHP 5.6.15 的新版本不能正常使用此版本的 OpenSSL 和 Composer-PHP。我遇到错误:
Unable to locate a valid CA certificate file. You must set a valid 'cafile' option. A valid CA certificate file is required for SSL/TLS protection. ...
[Composer\Downloader\TransportException]
The configured cafile was not valid or could not be read.
我用 Brew 更新了 OpenSSL 的版本,然后确保它在系统中正确注册:
brew unlink openssl && brew link --force openssl
但实际上,ZendServer 似乎在二进制文件目录中拥有自己的 openssl 库本地副本:
/usr/local/zend/bin/openssl
openssl.cafile
是空的,所以我决定将它指向新路径,正如某些教程中所推荐的那样:usr/local/etc/openssl/cert.pem
结果:
系统似乎指向正确版本的 openssl:
$ openssl version
OpenSSL 1.0.2f 28 Jan 2016
$ openssl version -d
OPENSSLDIR: "/usr/local/etc/openssl"
同时which
指向zend的OpenSSL版本:
$ which -a openssl
/usr/local/zend/bin/openssl
/usr/local/bin/openssl
/usr/bin/openssl
和PHP它似乎仍然有旧的默认配置,通过我的系统中不再存在的路径:
$ php -i | grep openssl
Configure Command => './configure' '--prefix=/usr/local/zend' '--with-config-file-path=/usr/local/zend/etc' '--with-config-file-scan-dir=/usr/local/zend/etc/conf.d' '--disable-debug' '--enable-inline-optimization' '--disable-all' '--enable-libxml' '--enable-session' '--enable-spl' '--enable-xml' '--enable-hash' '--enable-reflection' '--with-pear' '--with-apxs2=/usr/local/zend/apache2/bin/apxs' '--with-layout=GNU' '--enable-filter' '--with-pcre-regex' '--with-zlib' '--enable-simplexml' '--enable-dom' '--with-libxml-dir=/usr/local' '--with-openssl=/usr/local/openssl-0.9.8zc' '--enable-pdo' '--with-pdo-sqlite' '--with-pdo-mysql=mysqlnd' '--with-libedit' '--with-pdo-pgsql' '--with-iconv' '--with-sqlite3' '--disable-phar' '--enable-xmlwriter' '--enable-xmlreader' '--enable-mysqlnd' '--enable-json' 'CC=gcc' 'CFLAGS=-fPIC '-O2' '-pipe' '-g' '-fno-common' '-g'' 'CPPFLAGS=-fPIC 'CXXFLAGS=-fPIC 'CXX=g++' 'LDFLAGS='
openssl
Openssl default config => /usr/local/openssl-0.9.8zc/ssl/openssl.cnf
openssl.cafile => /usr/local/etc/openssl/cert.pem => /usr/local/etc/openssl/cert.pem
openssl.capath => no value => no value
我还没有找到任何方法来更改 Zend Server 8.5.2 中 PHP 的默认 Zend OpenSSL 配置,并指出它到 OSX.
中的新 OpenSSLComposer 仍然抛出同样的错误并且不起作用。 我在这里和那里爬了 Whosebug,还没有找到适合我的解决方案。任何帮助将不胜感激。
谢谢!
我自己的回答:看起来,当PHP被编译时,那些库被内置到PHP中,所以升级SSL lib文件不会'没有任何效果 除非 PHP 被重新编译 。在我看来,没有办法更新 ZendServer 中的 OpenSSL 库,除非下载更新的版本(没有更新的版本)。
经过几天的调查,似乎没有办法在 ZendServer 中更新 OpenSSL for PHP -编译 PHP 和库。所以这个问题似乎无法回答。没有简单的方法来做到这一点。您仍将拥有 OpenSSL 的系统版本,它与使用 PHP.
预编译的版本不同我放弃了在 ZendServer 中为 PHP 升级 OpenSSL 的想法,因为它内置于 PHP 本身。相反,我回滚了我的配置和 ZendServer 设置,因此它至少以某种方式与旧版本的 OpenSSL 一起工作。
它在某些情况下也可能有帮助,无需重新安装:to manually update certificates
- 已从 http://curl.haxx.se/ca/cacert.pem 下载
- 复制
cacert.pem
到'/usr/local/zend/etc/ssl/certs/'
- 修改CURL配置(Zend Server Configuration -> PHP -> CURL)并更改:
cacert.pem
curl.cainfo = '/usr/local/zend/etc/ssl/certs/cacert.pem'
- 重新启动 PHP 并检查 CURL 是否可以从 HTTPS URL. 读取
可以在文章中找到更多信息 Fixing the expired intermediate certificate on Mac OS X