Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 子目录中的Codeigniter-为什么解析控制器/类/函数不起作用?_Php_Codeigniter_Url Routing - Fatal编程技术网

Php 子目录中的Codeigniter-为什么解析控制器/类/函数不起作用?

Php 子目录中的Codeigniter-为什么解析控制器/类/函数不起作用?,php,codeigniter,url-routing,Php,Codeigniter,Url Routing,我有一个基本的codeigniter设置,无法让它运行。我想我已经明白它的工作原理如下: http://localhost/index.php/class/function 其中类指向控制器 我遇到的问题是,我的安装位于这样的子文件夹中: http://localhost/path%20to%20ci/index.php/class/function CI总是给我一个404,即使控制器类存在 我已经深入研究了CI源代码,它向我展示了整个请求URI作为输入: path to ci/index.

我有一个基本的codeigniter设置,无法让它运行。我想我已经明白它的工作原理如下:

http://localhost/index.php/class/function
其中类指向控制器

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

http://localhost/path%20to%20ci/index.php/class/function
CI总是给我一个404,即使控制器类存在

我已经深入研究了CI源代码,它向我展示了整个请求URI作为输入:

path to ci/index.php/class/function
我是否需要配置任何东西使CI自动检测前缀以解析类和函数

我可以或者甚至需要设置基本路径吗

具体例子

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

http://localhost/workspace/Limesurvey%20CI/index.php
工作控制器为:

http://localhost/workspace/Limesurvey%20CI/index.php/installer
将application/config/config.php中的基本路径设置为:

这是根据为该设置提供的文档进行的。

通过设置配置变量$config['base\u url'],可以在application/config/config.php中定义基本url


一旦配置好,它应该可以解决您的问题。

不能指望Codeigniter会进行符合RFC的URL处理。要解决这个问题,您必须知道Codeigniter不能处理所有url,在这种情况下,在基本url中不可能有空格字符%20

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

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

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

我很抱歉,但这会触发config.php加载两次,这会导致一个致命错误,因为它重新定义了_autoload函数。我将尝试更静态的方法。我已经添加了具体的URL和新的配置设置。使用该设置,config.php不会被加载两次,但我仍然会收到404错误。你有主意了吗?你需要一个动态的基本URL吗?您是否做了任何其他配置更改…或者更改了routes.php文件?目前我不需要它。将其替换为静态设置,请参见我的更新问题,我在其中添加了具体值。看起来CI路由器和Uri根本没有反映$config['base_url']设置。我在CI core中进行了搜索,看起来它仅用于输出。看起来您的基本URL是正确的。您是否有.htaccess文件设置?您是否对基本CI安装进行了任何其他配置更改?是否确实正确创建了控制器类?没有.htaccess在运行,基本CI安装只是没有更改。我所做的唯一更改是基本url配置。我曾经在index.php中将$application\u folder和$system\u path设置为一个完全限定的路径名,但恢复了这些更改,这并没有什么区别。控制器是由Limesurvey应用程序提供的,它应该可以工作,我现在将对其进行更详细的检查。好的,我在尝试下面评论的致命错误,看起来安装程序控制器正在重新加载配置,这可能也是CI应用程序中的一个错误,阻碍我了解更多信息。我会继续挖。感谢您到目前为止的详细反馈。
http://localhost/workspace/Limesurvey_CI/index.php/installer