php7 加载不了com,win环境php7.2无法加载curl,openssl的问题解决方法

在win7或者win10搭建php开发环境遇到一些奇怪的问题

1.执行php -m时,openssl显示已经加载,如图:

2.但是在实际使用curl或者openssl相关函数时,却提示没有这种函数,直接报错

3.解决办法

3.1建一个test.php执行var_dump(get_loaded_extensions());首先看看实际的加载情况,看到openssl和curl实际上都没有加载进来

3.2 无法加载openssl的解决办法

3.3 无法加载curl的解决办法

复制以下文件:

从PHP根文件夹到Apache2 / bin文件夹,重启Apache即可

1.执行php -m时,openssl显示已经加载,如图:

e41c06ac78f369b7776dfb8b97adc3d1.png

在php.ini中已经开启这个模块

0522328198da9a8f0cef488fb0351e7c.png

2.但是在实际使用curl或者openssl相关函数时,却提示没有这种函数,直接报错

Call to undefined function openssl_pkey_get_private()

5a10b6a03ae037046655115cf8471b02.png

3.解决办法

3.1建一个test.php执行var_dump(get_loaded_extensions());首先看看实际的加载情况,看到openssl和curl实际上都没有加载进来

574731ff22bfc482d413756516c65fa4.png

3.2 无法加载openssl的解决办法

1、正确安装VC库。

2、php7.1版本安装目录中的 libeay32.dll 及 libssh2.dll 变为了php7.2版本安装目录中的libcrypto-1_1-x64.dll 及 libssl-1_1-x64.dll。

3、查看apache安装目录下的bin文件夹,看是否有libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 两个文件,如果没有需要把php7.2版本安装目录中的libcrypto-1_1-x64.dll 及 libssl-1_1-x64.dll复制到apache的bin目录下。

作者:大王顶

链接:https://www.jianshu.com/p/5a3d2804031d

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

3.3 无法加载curl的解决办法

通常,这是Apache和PHP之间的OpenSSL版本不匹配错误。如果Apache将PHP作为DSO模块加载,则将使用其自己的OpenSSL版本(dll和libs)。因此,如果PHP扩展需要较新的版本,则它可能无法在Apache加载的DLLS中找到适当的接口,并且将无法正常工作。

由于需要加载PHP扩展,因此需要相关的DLL文件至少是PHP模块要求的版本。假设您正在为Apache和PHP使用最新的版本,并且都使用相同的MVC版本构建,则可以

复制以下文件:

libcrypto-1_1.dll

libcrypto-1_1-x64.dll

libcurl.dll

libsasl.dll

libssh2.dll

libssl-1_1.dll

libssl-1_1-x64.dll

nghttp2.dll

libeay32.dll(如果您的PHP发行版中存在)

ssleay32.dll(如果您的PHP发行版中存在)

从PHP根文件夹到Apache2 / bin文件夹,重启Apache即可

以防万一您确信PHP构建比Apache构建新。

在相反的情况下,您可以将相同的文件从Apache BIN复制到PHP根目录。

无论如何,请事先备份APache和PHP文件夹的内容。

将PHP路径添加为环境变量将优先使用该路径来加载相关DLL,并且可以解决该问题。但是,您将失去服务器的可移植性。此外,如果您还添加了Apache PATH作为变量,并且OpenSSL版本有所不同(最多加载不同的链接DLL文件),则可能会发生很多问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值