今天使用thinkphp5.1遇到个问题,验证码功能在本地环境调试正常,放到服务器上却无法显示,给出的错误信息是:致命错误: Class 'think\captcha\Captcha' not found
在官方网站找了半天,只发现有其他人也遇到了这问题,却没人给出解决方法。
我的本地环境和服务器环境一样,唯一不同就是:本地的入口文件是在thinkphp5目录下的public目录,服务器上的入口文件是在一个和thinkphp5同级的目录里面(这是因为我听从了TP5文档的建议把非入口文件放到WEB访问目录以外的目录)。
我的目录结构如下:(index-u.php是我的入口文件)
TP5-web目录结构
思来想去,系统提示Captcha类不存在,应该是因为相关文件没有被加载,应该是路径问题。这些文件在vendor文件夹内。我是新手也不会准确调试查找错误,就只能用笨方法了。通过把thinkphp目录下的vendor复制到多个不同文件夹下测试,最后找到了解决方法:就是把vendor文件夹复制到WEB访问目录的父目录里面,使它成为和WEB访问目录同级的一个目录。
正确的目录布置如图:
TP5验证码无法显示的解决方法
最后吐槽一下thinkphp5:
1、既然提倡入口文件和框架其他文件分离,就应该考虑到不是所有用户都会把入口文件放到thinkphp框架内的public文件夹。自动判断一下rootpath没什么难度吧。
2、官网有好几个人反应遇到了这样的问题,有的还是好几个月前问的,却从来没有人给出解决方案,甚至零答复。似乎没什么人关系thinkphp5,活跃度好像有点惨。新事物的船,还是晚上一点坐着才省心。