前端技术 手机教程
程序开发 平面动画
系统软件 运营推广
CMS教程 在线手册
资源下载 网络安全
精准搜索请尝试:精确搜索

ThinkPHP5.*版本验证码无法显示(验证码url404)的解决办法

2020-10-16 15:34:49 来源:原创 作者:寂静的神经

ThinkPHP5.*版本验证码不显示,代码是直接复制的官方手册中的代码:


<FORM method="post" class="form" action="{:url('check')}">
输入验证码:<INPUT type="text" class="text" name="code"><br/>
<div>{:captcha_img()}</div>
<INPUT type="submit" class="btn" value=" 提交 ">
</FORM>

错误截图:

网上对ThinkPHP5.*版本验证码不显示的原因总结有以下几条:

1.未安装验证码类库

解决办法:DOS切换到项目根目录,执行Composer安装类库。


composer require topthink/think-captcha=1.*

我的ThinkPHP5.*是完整版的,因此默认包含了验证码类库,排除问题1。

2.未开启GD库

解决办法:开启GD库。

经过检查,本地环境已开启GD库,排除问题2。

3.文件UTF-8 BOM头问题

解决办法:在验证码控制器中添加代码:


ob_clean();

文件位置:/vendor/topthink/think-captcha/src/CaptchaController.php

经过检查,我的文件格式为UTF-8无BOM头格式,因此排除问题3。

4.伪静态原因,右键复制验证码网址,在浏览器中打开发现是404。

这个问题是因为我们没有配置路由去隐藏 index.php,而ThinkPHP5.*的验证码默认生成的URL是不带index.php的,这就导致验证码url404从而无法显示。

解决办法:按照官方手册的教程隐藏入口文件,在入口文件的同级目录下新建.htaccess文件,输入如下代码后保存。


<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

然后刷新下页面,发现验证码已经正常显示了,问题解决。

 

分享到:
本文关键词:thinkphp 验证码 404

相关文章

零五科技,分享IT知识,国内顶级IT知识门户网站。

Copyright (C) www.02405.com, All Rights Reserved.

零五科技 版权所有 辽ICP备13002105号-1