【问题标题】:Codeigniter: server error while adding namespace to controller classesCodeigniter:将命名空间添加到控制器类时出现服务器错误
【发布时间】:2016-02-19 16:12:46
【问题描述】:

我正在 codeigniter 中构建一个应用程序,我的应用程序文件夹层次结构如下:

|-controller
   |-admin
      |-dashboard

我想将仪表板添加到namespace admin,所以我这样做了:

defined('BASEPATH') OR exit('No direct script access allowed');
namespace admin;
class Dashboard extends MY_Controller {
     //constructor and some methods
}

问题是每当我尝试从 uri localhost/myapp/admin/dashboard 访问仪表板类时,我都会在浏览器上收到如下错误:

Server error

500

但是,如果我注释掉 namespace admin; 行,它运行时不会出现任何错误。

为什么命名空间会产生这样的内部服务器错误?

在codeigniter中为控制器类使用命名空间时如何防止此类错误?

【问题讨论】:

  • 首先检查您使用的是哪个版本的 PHP 和 codeigniter 并告诉我们。 CodeIgniter 不支持取决于版本的命名空间。如果你想使用命名空间 php 版本必须 >= 5.3.0 Codeigniter 不使用命名空间,因为它被编写为支持 php 4
  • 如果对你有帮助,请告诉我
  • php 5.6 和 CI 版本 3.0.1
  • 实际上 Codeigniter 的命名空间存在问题,因为 codeigniter 是在 PHP4 中构建的,而 Namespace 是在 PHP5 中引入的
  • 我已将此添加为答案,如果对您有帮助,请接受它作为答案

标签: php codeigniter namespaces internal-server-error


【解决方案1】:

原因是 Codeigniter 本身不支持命名空间。他们这样做是为了让 Codeigniter 向后兼容 PHP 4。命名空间仅在 PHP 5.3.0 及更高版本中可用。

【讨论】:

    【解决方案2】:

    首先检查您使用的是哪个版本的 PHP 和 codeigniter 并告诉我们。

    CodeIgniter 不支持取决于版本的命名空间。如果你想使用命名空间 php 版本必须 >= 5.3.0 Codeigniter 不使用命名空间,因为它是为支持 php 4 而编写的

    如果您必须使用命名空间,那么我会将您链接到 Stack Overflow Similar Problem link,该链接具有通过配置编辑使用命名空间和 Codeigniter 的赞成参考。你可以试试,但默认不支持

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多