Laravel框架初体验踩坑记录(二)

第一天只是环境初步配置好,浏览器打开还是有错,犹抱琵琶半遮面的。

第二天:解决这些错误

 

1. 500 Server Error

不是网上说的权限问题,找了半天日志在哪里,其实是在laravel\storage\logs下面。

日志提示:

[2020-05-27 06:58:26] production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified.

处理方式:进入laravel目录,命令行执行

php artisan key:generate

又出现问题:

   ErrorException

  file_get_contents(D:\xiaoxiang-php7.4\laravel\.env): failed to open stream: No such file or directory

原因:git拉下来的laravel代码只有.env.example文件,没有.env文件

复制其改名为.env即可

 

2. 报错:Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()

网上找的答案都是说php.ini中开启extension=openssl,但昨天composer update的时候早就已经开启了,不是这个问题。

 

直接在命令行运行执行却发现有openssl_cipher_iv_length函数:

D:\>php -r "echo(openssl_cipher_iv_length('AES-128-CBC'));"
16

而在laravel的入口文件中最上面加上:

echo(function_exists("openssl_cipher_iv_length"));die;

输出空白,不存在这个函数。

 

分别用命令行和浏览器查看phpinfo,

D:\>php -r "echo(phpinfo());"
echo(phpinfo());die;

两个显示的Loaded Configuration File都是一样,但是浏览器看到的extension不只是openssl,其他bz2、mbstring之类的全部都没有加载进来。

查了半天找不到原因,突然想到是不是apache的问题,去apache的error.log,果然发现问题:

PHP Warning:  PHP Startup: Unable to load dynamic library 'bz2' (tried: ext\\bz2 (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82), ext\\php_bz2.dll (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: ext\\curl (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82), ext\\php_curl.dll (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'mbstring' (tried: ext\\mbstring (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82), ext\\php_mbstring.dll (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'mysqli' (tried: ext\\mysqli (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82), ext\\php_mysqli.dll (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'openssl' (tried: ext\\openssl (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82), ext\\php_openssl.dll (\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82)) in Unknown on line 0

“\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe6\xa8\xa1\xe5\x9d\x97\xe3\x80\x82”翻译过来是:“找不到指定的模块。”

于是去php.ini中修改extension_dir,原本是ext,改为完整的路径

extension_dir = "ext"
extension_dir = "D:/php-7.4.6/ext"

 

现在bz2、mbstring可以加载了,但curl和openssl还是同样的问题。

继续网上找发现一个说下载libcrypto*.dll和libssl*.dll放到php和apache的bin目录的。

我这边php目录下面是有的,直接复制到apache的bin目录。

 

openssl可以加载了。但curl还是加载不了,不知道是哪个文件。

现在laravel终于可以看了,就没管curl了。

 

最后思考,我只把php的目录路径加入我用户的环境变量的PATH中,apache服务使用的系统服务用户,所以它的环境变量PATH中没有php的目录路径,造成这些的问题。

实际上应该可以直接将php的目录路径加入系统环境变量的PATH中,不需要修改php.ini的extension_dir为绝对路径,也不需要复制文件到apache的bin目录。以后再实验。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值