• thinkphp无法加载模块解决办法


    前台入口文件index.php

    <?php
    //前台入口
    define('THINKPHP_PATH', '../ThinkPHP/');//底层的位置
    define('APP_PATH', './home/');//定义项目位置
    define('APP_DEBUG', true);//定义DEBUG开关
    require_once THINKPHP_PATH.'ThinkPHP.php';
    //echo 'hellow';
    
    ?>

    配置文件:

    1 <?php
    2 return array(
    3     //'配置项'=>'配置值'
    4      'DEFAULT_C_LAYER'       =>  'Controller', // 默认的控制器层名称
    5      'URL_MODEL'             =>  1,       // URL访问模式,可选参数0、1、2、3,代表以下四种模式:
    6 );
    7 ?>

    Controller下的IndexController.class.php文件:

    1 <?php
    2 namespace HomeController;
    3 use ThinkController;
    4 class IndexController extends Controller {
    5     public function index(){
    6         echo "hello world";
    7     }
    8 }

    浏览器调试结果:

    这个路径http://localhost:8080/test/index.php是可以显示控制器方法中的欢迎信息的,

    而http://localhost:8080/test/index.php/index和http://localhost:8080/test/index.php/index/index却提示了错误信息

    :(

    无法加载模块:Index

    错误位置

    FILE: C:wampwwwThinkPHPLibraryThinkDispatcher.class.php  LINE: 172

    TRACE

    #0 C:wampwwwThinkPHPLibraryThinkDispatcher.class.php(172): E('???????????????...')
    #1 C:wampwwwThinkPHPLibraryThinkApp.class.php(36): ThinkDispatcher::dispatch()
    #2 C:wampwwwThinkPHPLibraryThinkApp.class.php(184): ThinkApp::init()
    #3 C:wampwwwThinkPHPLibraryThinkThink.class.php(120): ThinkApp::run()
    #4 C:wampwwwThinkPHPThinkPHP.php(96): ThinkThink::start()
    #5 C:wampwww estindex.php(7): require_once('C:wampwwwThi...')
    #6 {main}

     
    然后百度得知,开启了DEBUG调试模式后,控制器路径名要严格区分大小写。
    顿悟,修改地址为:http://localhost:8080/test/index.php/Index和http://localhost:8080/test/Index.php/index均还是一样的问题。
    遂查阅官方手册是可以修改不区分大小写的:
    在配置文件中加上一句话:'URL_CASE_INSENSITIVE'  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写。
    试了下,还是不行!
     
    想了想,是不是Controller的问题,继续查阅手册。得知

    自从3.2之后thinkphp默认的控制器不再使用Action,而是使用了更贴近MVC模式的Controller。

    如果你原来习惯用了Action,还是可以吧Controller修改成Action的

    可以这样定义:

    1 namespace HomeAction;
    2 use ThinkAction;
    3 class IndexAction extends Action{}

    然后,在配置文件config.php中,设置:

    1 'DEFAULT_C_LAYER'=>'Action'

    遂,把Controller修改成Action,还是一样的问题,我的天!

    继续百度!

    发现发现别人的目录结构和我的好像不一样!

    仔细查看代码

    1 define('APP_PATH', './home/');//定义项目位置

    发现3.1生成的home项目目录下并没有Home目录

    而3.2生成的home项目目录却多了一层Home目录

    因此我们在URL地址上必须加上Home目录,也就是:http://localhost:8080/test/index.php/Home/Index/index(文件入口[index.php]/Home[默认]/控制器名[Index]/方法名[index])

    浏览器粘贴访问,终于显示出那诱人可爱的hellow world

  • 相关阅读:
    【两周一本书】大话设计模式
    如何将在AWS上的网站快速从http转换为https
    java中error和exception的区别
    Java IO : NIO与IO的区别
    TCP/TP:DNS区域(Zone)
    Liferay 7:Liferay DXP解决方案
    Eclipse:Eclipse插件开发全套教程
    Liferay 7:Liferay DXP全套教程内附源码
    Liferay 7:Liferay内部博客地址
    Gradle:gradle下载插件
  • 原文地址:https://www.cnblogs.com/mrcln/p/3868956.html
Copyright © 2020-2023  润新知