【问题标题】:Codeigniter in subdirectory - why does resolving controller/class/function not work?子目录中的 Codeigniter - 为什么解析控制器/类/函数不起作用?
【发布时间】:2011-08-18 13:05:11
【问题描述】:

我有一个基本的 codeigniter 设置,但无法运行。我以为我已经理解它的工作原理如下:

http://localhost/index.php/class/function

class 指向控制器。

我遇到的问题是我的安装位于这样的子文件夹中:

http://localhost/path%20to%20ci/index.php/class/function

即使控制器类存在,CI 也总是给我一个 404。

我已经深入研究了 CI 源,它告诉我整个请求 URI 被作为输入:

path to ci/index.php/class/function

我需要配置什么来让 CI 自动检测前缀以解析 classfunction

我可以甚至是否需要设置基本路径?

具体例子

我的 CI 路径可通过以下方式访问:

http://localhost/workspace/Limesurvey%20CI/index.php

工作控制器是:

http://localhost/workspace/Limesurvey%20CI/index.php/installer

application/config/config.php中的基本路径设置为:

$config['base_url'] = 'http://localhost/workspace/Limesurvey%20CI/';

根据为该设置提供的文档。

【问题讨论】:

  • 看起来您的基本 URL 是正确的。你有.htaccess 文件设置吗?您是否对基本 CI 安装进行了任何其他配置更改?你确定你正在正确地创建一个控制器类吗?
  • 没有.htaccess 在起作用,基本 CI 安装只是没有改变。我所做的唯一更改是base_url 配置。我曾经在index.php 中将$application_folder$system_path 设置为一个完整的限定路径名,但恢复了这些更改并且它没有任何区别。控制器由 Limesurvey 应用程序提供,它应该可以工作,我现在将更详细地查看它。
  • 好的,我再次尝试解决我在下面评论的致命错误,看起来安装程序控制器正在再次加载配置,这也可能是 CI 应用程序中的一个错误,它阻碍了我了解更多。我会继续挖掘。感谢您迄今为止的详细反馈。

标签: php codeigniter url-routing


【解决方案1】:

不能指望 Codeigniter 会执行符合 RFC 的 URL 处理。为了解决这个问题,必须知道 Codeigniter 不能与所有 URL 一起工作,在这种情况下,基本 URL 中不可能有空格字符 %20

将安装移动到另一个没有空格字符的路径解决了这个问题:

http://localhost/workspace/Limesurvey_CI/index.php/installer

此外,不需要更改application/config/config.php 中的$config['base_url']。它可以保持默认值''(空字符串)。

【讨论】:

    【解决方案2】:

    您可以通过设置配置变量$config['base_url']application/config/config.php 中定义base_url

    配置后应该可以解决您的问题。

    【讨论】:

    • 我是trying to do so,但这会触发config.php 被加载两次,这会导致致命错误,因为它重新定义了__autoload 函数。将尝试更静态的方法。
    • 我已经添加了具体的 URL 和新的配置设置。使用该设置 config.php 不会加载两次,但我仍然收到 404 错误。你有什么想法吗?
    • 您需要动态的基本 URL 吗?您是否进行了任何其他配置更改...或更改了 routes.php 文件?
    • 暂时我不需要它。将其替换为静态的,另请参阅我在其中放入具体值的更新问题。
    • 看起来 CI RouterUri 根本没有反映 $config['base_url'] 设置。我在 CI 核心中进行了搜索,看起来它仅用于输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多