我该如何解决这个“找不到对象!” 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
或者你应该使用这个命令运行 Codeigniter
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 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章
HSQLDB:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象