У меня есть человечность 14.04., php 7 и nginx.
Я хочу использовать mysql ssl, таким образом, я включил путем удаления""; перед extension=php_openssl.dll в
/etc/php/7.0/fpm/php.ini
/etc/php/7.0/cli/php.ini
Перезапущенный php и nginx сервисы. Теперь я получаю ошибку:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_openssl.dll' - /usr/lib/php/20151012/php_openssl.dll: cannot open shared object file: No such file or directory in Unknown on line 0
Файл "/usr/lib/php/20151012/php_openssl.dll" действительно не существует.
Сценарий PHP, с которым я пытаюсь соединиться на mysql ssl:
$con=mysqli_init();
if (!$con){
die("mysqli_init failed");
}
mysqli_ssl_set($con, "/var/www/certs/client-key.pem","/var/www/certs/client-cert.pem","/var/www/certs/ca-cert.pem",NULL, null);
if (!mysqli_real_connect(
$con,"localhost","user", 'password',"db", 3306)){
die("Connect Error: " . mysqli_connect_error());
}
mysqli_close($con);
Полномочия на всех файлах сертификата в порядке, испытанное остроумие 644, 664, 777.
Попробованный для выполнения сценария по браузеру и по консоли.
Где я могу найти недостающий пакет?
Спасибо
ОБНОВЛЕНИЕ 1: Если я комментирую назад "extension=php_openssl.dll" в файлах php.ini затем, я получаю другую ошибку:
PHP Warning: mysqli_real_connect(): this stream does not support SSL/crypto in /var/www/tmp.php on line 70
Если Вы используете mysql ssl, не используют localhost, используют IP-адрес сервера для хоста базы данных.
Динамически подключаемые библиотеки (DLLs) являются определенной для Windows технологией и не работают над Ubuntu. Поскольку PHP может быть выполнен в различных операционных системах, его конфигурационные файлы содержат примеры для того, как настроить его в различных операционных системах:
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; ... or with a path:
;
; extension=/path/to/extension/msql.so
Обычно, сборка Linux PHP уже идет со встроенной поддержкой SSL, в отличие от сборки Windows, где Вам нужен DLL, Вы упомянули. Но Вы, кажется, используете стороннюю сборку PHP 7 (возможно, от PPA?), потому что Ubuntu 14.04 идет с PHP 5 по умолчанию. Таким образом, эта сторонняя сборка могла бы обработать SSL по-другому.