Провел действительно широкое исследование по теме, но так и не смог заставить свежую версию OpenSSL
работать с ZendServer v.8.5.2 на OSX El Capitan.
Предыстория: по умолчанию кажется, что ZendServer и El Capitan идут с openssl-0.9.8zc. Свежая версия PHP 5.6.15 не работает нормально с этой версией OpenSSL и Composer-PHP. Я получал ошибки:
Не удалось найти действительный файл сертификата ЦС. Вы должны установить допустимую опцию 'cafile'. Для защиты SSL/TLS требуется действительный файл сертификата ЦС. ...
[Composer\Downloader\TransportException]
Настроенный файл cafile недействителен или не может быть прочитан.
Я обновил версию OpenSSL с помощью Brew, а затем убедился, что он правильно зарегистрирован в системе:
brew unlink openssl && brew link --force openssl
Но на самом деле кажется, что у ZendServer есть собственная локальная копия библиотеки openssl в каталоге двоичных файлов:
/usr/местные/зенд/бин/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 OpenSSL по умолчанию для PHP в Zend Server 8.5.2 и указать ее на новый OpenSSL в OSX.
Composer по-прежнему выдает ту же ошибку и не работает. Я просканировал StackOverflow здесь и там, не нашел решения, которое работает в моем случае. Любая помощь будет высоко ценится.
Спасибо!
Ответ сам себе: похоже, когда PHP компилируется, эти библиотеки встроены в PHP, поэтому обновление файлов библиотеки SSL не будет иметь никакого эффекта, если только PHP не будет перекомпилирован. Мне кажется, нет возможности обновить библиотеку OpenSSL в ZendServer, если только не загрузить более новую версию (более новых версий нет).