原因:有些集成环境或者使用的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
这是我外出是随便配置的环境遇到的问题,搞得我半天写不了东西,如果分享也能解决你的问题,那你就很幸运啦嘿嘿
最佳答案