注:我使用的是ThinkPHP的3.2版本,其他版本类似
从自己入手PHP开发以来,一直使用的是ThinkPHP的框架,前几天偶然间碰到了一个错误,在Debug模式下网站一切正常,而关闭Debug进行部署的时候有些页面却出现了错误无法执行,自己也是百思不得其解,经过自己的各种尝试终于还是找到了错误原因.
·先贴出来一个简单的错误原型
<?php
namespace Home\Controller;
use Think\Controller;
class testController extends Controller
{
public function index(){
echo "Test";
}
public function show(){ }
}
检查一下上面代码的语法,可以看出控制器内就只有两个简单的函数,语法上根本就没有错误!
① 我们开启Debug测试:
输入链接: http://localhost/Index.php?m=Home&c=Test&a=Index ,执行的结果如下图,显示出了Test文字,一切正常:
② 我们关闭Debug在测试
输入链接: http://localhost/Index.php?m=Home&c=Test&a=Index ,执行的结果如下图,“页面错误!请稍后再试~”直接挂了…
当时出现这种情况的时候我也纠结了,我尝试着把代码中的函数一个一个清空,结果关闭Debug后还是出错,后来我想到了是不是函数名字的问题,结果误打误撞还真是这个问题,在上面的错误代码中我使用了一个名字为show的函数,当我们把show函数改成其他名字的时候,例如show1(),问题就解决了233
·解决方案
在上面的错误原型分析中我们可以看出,这种错误是由于你的函数命名的问题,我们自己的Controller是继承自ThinkPHP的Controller,当你在自己的Controller中的函数命名与ThinkPHP中的Controller类内函数有重名的时候,就会出现Debug下正常,关闭Debug就挂掉的现象.
所以总的来说,在我们自己的Controller中要避免使用与ThinkPhp中的Controller类有重名的函数名,这样关闭Debug出错的问题就解决了.
//注意重名函数有: show();
redirect();
·附上ThinPHP的Controller类的位置
/ThinkPHP/Library/Think/Controller.class.php
在使用一些常用的函数名的时候最好去瞄瞄那个Controller类里面是否有了.