我被要求学习CodeIgniter,但我之前甚至没有听说过它,所以我试图通过教科书和官方教程。但我甚至不能成功地显示一个健康的世界...我试图寻找一段时间的解决方案,但没有任何帮助。
具体问题是这样的。我正在用MAMP构建CodeIgniter环境,PHP版本是5.6.2,CodeIgniter版本是2.2.0。但是无论我做什么,站点都只能显示默认的控制器或404页面。
首先,这里是控制器文件夹中的“hello.php”:
<?php
class Blog extends CI_Controller {
public function index()
{
echo 'Hello World!';
}
}
?>
我还没有设置mod_rewrite,所以我只是转到这个地址:php/您好,请输入您的密码。
我只得到一个404页面,所以我尝试修改config.php中的uri_protocol,我尝试了所有的修改,QUERY_STRING和ORIG_PATH_INFO一开始工作得很好。我以为我成功了。但是我错了。我然后用.htaccess文件设置了一个mod_rewrite,我只能得到一个默认的控制器(这是欢迎页面).我想我一定是在我的.htaccess文件做错了什么,所以我试图编辑它,但它不工作,所以我试图删除该文件,并回到index.php/hello再次,然后我发现它不能再工作了,我得到只是一个默认的欢迎页面。
然后我尝试重新启动服务器,将config.php中的index_page修改为'index.php?',将CodeIgniter移到根目录(我的意思是不是localhost:8888/CodeIgniter/index.php,我删除了CodeIgniter文件夹,只是转到localhost:8888/index.php),完全删除当前的CodeIgniter文件夹并从官方网站再次下载,当然也尝试了uri_protocol的其他选择。但是没有任何帮助。我得到的仍然是默认控制器或一个404页面。
总之,在config.php文件中,如果我设置
$config['index_page'] = 'index.php';
然后
$config['uri_protocol'] = 'QUERY_STRING';
$config['uri_protocol'] = 'ORIG_PATH_INFO';
返回默认的控制器(即使我试图访问实际上不存在于控制器文件夹中的页面),而其他uri_protocols返回404页面。
否则,如果我设置
$config['index_page'] = 'index.php?';
然后
$config['uri_protocol'] = 'PATH_INFO';
$config['uri_protocol'] = 'ORIG_PATH_INFO';
返回默认控制器(即使我尝试访问控制器文件夹中不存在的页面也是如此),其他则返回404页面。
我也认为这可能是MAMP的问题,但即使我上传整个网站到VPS服务器(CentOS 6.5,php版本5.3.3),完全相同的问题发生。
有人知道吗?
3条答案
按热度按时间3phpmpom1#
首先,要从url中删除index.php,请在站点根目录中创建一个.htaccess文件,并添加以下代码:
然后在您的config/config.php文件中:
照常设置其余配置参数。
现在,你正在使用url localhost:8888/CodeIgniter/index.php/hello来访问你的应用程序。这是错误的(除非你正在路由url)。你必须加载你的控制器,控制器会为你加载视图。所以,现在用途:
在控制器的构造函数中,你必须调用父构造函数,这样你就可以使用loader class来加载库,视图,模型等等。
现在最后,你最好的办法是好好地浏览文档。你已经试过了,但还不够!祝你好运。
ohtdti5x2#
嗯,谢谢你的帮助!Twitter上的一个朋友告诉我,类名是错误的,它应该是相同的php文件(在这种情况下,它应该是类Hello extends CI_Controller)
在那之后,一切都好了!
3zwjbxry3#
我在通过命令行使用CodeIgniter 1.7时遇到了这个问题(CLI)。我必须修改_fetch_uri_字符串
CI_URI
类中的()函数(system/libraries/URI.php)来查看$_SERVER['argv'][1]
是否被设置为查找正在使用的URI。我只会在index.php文件的顶部执行一个var_dump($_SERVER); exit();
。我对
_fetch_uri_string()
函数所做的更改突出显示: