PHP 启动:无法加载动态库“/usr/lib/php/20151012/php_openssl.dll”

PHP 启动:无法加载动态库“/usr/lib/php/20151012/php_openssl.dll”

我有 ubuntu 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”确实不存在。

我尝试使用 mysql ssl 连接的 Php 脚本:

$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: 如果我在 php.ini 文件中注释掉“extension=php_openssl.dll”,那么我会收到另一个错误:

PHP Warning:  mysqli_real_connect(): this stream does not support SSL/crypto in /var/www/tmp.php on line 70

php信息: 在此处输入图片描述

答案1

动态链接库 (DLL) 是 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。

答案2

如果您使用 mysql ssl,请不要使用 localhost,请使用服务器 IP 地址作为数据库主机。

相关内容