解决Argument 1 passed to think\Middleware不能为整数的方法

浏览:6531 发布日期:2020/06/25 分类:ThinkPHP6专区 关键字: tp6 短标签 短开头 integergiven
今天分享一个解决Argument 1 passed to think\Middleware::import() must be of the type array, integer given类似的问题
原因:有些集成环境或者使用的php没有开启short_open_tag
去php.ini(php配置文件)找关键字short_open_tag修改为short_open_tag = On或者直接插入一行short_open_tag = On
如果没有修改php.ini文件的权限,那就检查您写的tp配置文件的开头把<?改成<?php

虽然是个很白痴的原因,但是如果您的php环境没有开启php开头短标记的时候是不会提示你没有开,而是报别的导致的错误,足够让你搞破脑袋,而就算调试核心代码也想不出来为啥
翻了下tp源码,原因是在tp读取您写的模块middleware.php中间件配置文件的时候,如果您在php文件开头使用了php短标记<?,并且你的php环境没有启用短标记 tp用自带的include方式获取你写的配置文件时候,只会返回int 1 而不是您在tp配置文件写的return的数组内容导致的错误
此类错误修复方法应该也可以用于读取其他读取配置文件(除了本文写的中间件配置文件报错)出现的同样错误,即:Argument 1 passed to think\****** must be of the type array, integer given

这是我外出是随便配置的环境遇到的问题,搞得我半天写不了东西,如果分享也能解决你的问题,那你就很幸运啦嘿嘿
最佳答案
评论( 相关
后面还有条评论,点击查看>>