我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?

Posted

技术标签:

【中文标题】我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?【英文标题】:How can I fix this "Object not found!" error in CodeIgniter-4? 【发布时间】:2020-07-25 20:24:58 【问题描述】:

我检查了控制器名称和方法名称,但仍然显示“在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。”

我已经尝试了下面给出的这个网址并得到了这个错误:

http://localhost/framework/index.php/helloworld
http://localhost/framework/helloworld/index

Controller名下的文件为:Helloworld.php

<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Helloworld extends CI_Controller

public function index()

echo 'Hello World!';

enter image description here

【问题讨论】:

看看***.com/questions/19183311/… 重新阅读你在 use 声明中的内容......它为你的扩展类“使用 CodeIgniter\Controller”......但仔细观察你错误地使用了 CI_Controller,它是如此 CI 3ish。 【参考方案1】:

改变

class Helloworld extends CI_Controller

class Helloworld extends Controller

在 CI4 中 CI_Controller 重命名为 Controller

【讨论】:

控制器名称已更正,但仍然出现致命错误:第 3 行的 C:\xampp\htdocs\ci\app\Controllers\Helloworld.php 中找不到类 'App\Controllers\Controller'跨度> @MonayemIslam 请看我的回答。您已删除 use 语句。您需要了解这是如何工作的。【参考方案2】:

如果你在不使用 htaccess 的情况下尝试 Codeigniter 4,你应该像这样调用

http://localhost/framework/public/helloworld

或者你应该使用这个命令运行 C​​odeigniter

php spark serve 

然后去浏览器检查http://localhost:8080

您应该从这里学习 codeigniter 4 的基础知识 How to Use codeigniter 4

希望对你有帮助

【讨论】:

【参考方案3】:

请在执行以下更改后尝试 -

删除 use 声明。 将 BaseController 扩展为 CI_Controller 在 CI4 中不可用。

返回你想在屏幕上显示的内容。

<?php namespace App\Controllers;

 class Helloworld extends BaseController 
   public function index() 
       return 'Hello World!';
   
 

【讨论】:

说“您需要运行 Spark Server 才能运行项目”并不完全正确。这是一个选择。你读过手册吗:) @AlokMali 谢谢。它适用于 BaseController 并为 Controller 获取致命错误。您能否解释一下为什么我会收到 Controller 的致命错误? 你有合适的Controller使用说明吗?还是您删除了它? 对不起 AlokMali,这是针对@MonayemIslam 关于他使用 Controller 而不是 BaseController 的问题。在这种情况下,之前使用 CodeIgniter\Controller 需要它才能工作。您的回答将其更改为使用 BaseController。 @MonayemIslam,我找不到,为什么你会遇到这个问题。 TimBrownlaw,请你回答一下。【参考方案4】:

在大多数 cmets 中,声明您所要做的就是将您的 CI_Controller 重命名为简单的 ole Controller(根据 CI 4 User guide ) 以及您在“使用”中声明的内容。

所以你会有

<?php namespace App\Controllers;

use CodeIgniter\Controller; // This is what you are "use"ing

class Helloworld extends Controller   // And this is where you are "use"ing it
    public function index() 
        echo 'Hello World!';
    

看到区别了吗?

【讨论】:

以上是关于我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章

lsass.exe程序错误 找不到对象名求解决方法

HSQLDB:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象

用户缺少权限或找不到对象

程序员找不到对象?谁说的,出来battle下

java.sql.SQLSyntaxErrorException:用户缺少特权或在 ubuntu 中找不到对象

如何使带有“.php”的网址返回“找不到对象”错误?