我被要求学习CodeIgniter,但我以前甚至没有听说过,所以我试图通过教科书和官方教程。但是我甚至无法成功地展示一个Hellow World ......我已经尝试了一段时间来搜索解决方案,但没有一个能帮助你。
这是具体问题。我使用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,所以我只是去了这个地址: 本地主机:8888 /笨/ index.php的/你好
我只得到一个404页面。所以我试着在config.php中修改uri_protocol。我尝试了所有这些,QUERY_STRING和ORIG_PATH_INFO最初工作正常。我以为我成功了。但是我错了。然后我用.htaccess文件设置了一个mod_rewrite,我只能得到一个默认控制器(欢迎页面)。我认为我必须在我的.htaccess文件中做错了所以我尝试编辑它但它不起作用,所以我试图删除文件并再次返回index.php / hello,然后我发现它我不能再工作,我得到的只是一个默认的欢迎页面。
然后我尝试重新启动服务器,将config.php中的index_page修改为&#39; index.php?&#39;,将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),也会出现完全相同的问题。
有人有想法吗?
答案 0 :(得分:0)
首先,要从您的网址中删除index.php,请在您的网站根目录中创建一个.htaccess文件,并添加以下代码:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
然后在你的config / config.php文件中:
$config['base_url'] = '';
$config['index_page'] = '';
照常设置其余配置参数。
现在,您正在使用url localhost:8888 / CodeIgniter / index.php / hello来访问您的应用程序。这是错误的(除非您正在路由网址)。您必须加载控制器,然后控制器为您加载视图。所以,现在使用:
localhost:8888/CodeIgniter/blog
再次。还有一件事。在Controller的构造函数中,您必须调用父构造函数,以便您可以使用loader class加载库,查看,模拟任何内容。
最后,您最好的选择是仔细阅读文档。你试过但还没试过!祝你好运。
答案 1 :(得分:0)
非常感谢你的帮助! Twitter上的一位朋友告诉我,类名错了,应该和php文件一样(在这种情况下,它应该是类Hello扩展CI_Controller)
之后,一切顺利!