Laravel:Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()

用php artisan serve 命令学习laravel后改为布署到win7+apache2.4+php7.4,设置好apache 虚拟主机后重启apache测试出现两个问题,其中一个是openssl_cipher_iv_length()函数未定义错误:

laravel详细提示如图:

搜索发现许多解决办法:

1.重启电脑

2.开启php的openssl扩展后重启apache(我的早就开启了)

3.修改代码framework\src\Illuminate\Encryption\Encrypter.php:215,加上根命名空间

4.将php目录添加到系统路径

5.复制php目录下的libeay32.dll和ssleay32.dll到apache\bin,目的是开启php的openssl扩展,(php74目录中没有这两个文件)。

不一一列举了,其中:1~3对我无效,4没试(应该是管用的),解决问题应该注重根源

        留意到函数名以openssl开头,在系统日志中发现php7.4.20记录了无法加载php_openssl.dll错误,经过查询分析,发现这个函数是由php的openssl扩展提供,apache+php模式没有成功加载php_openssl.dll,原因是缺少相关依赖,其实依赖是有的php目录下的:libcrypto-1_1-x64.dll和libssl-1_1-x64.dll都是OpenSSL的library,在httpd.conf中顶层配置添加一行:

LoadFile "D:/ApachePhpWin64/php74/libssl-1_1-x64.dll"

重启apache就可以了。

备忘:另外一个问题是laravel资源路由在apache下无效了,出现404错误。在apache配置文件里把laravel的public目录Directory块中添加

AllowOverride All

即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值