部署时使用PHP CodeIgniter 404

时间:2011-01-26 16:44:05

标签: php apache codeigniter

Oooops我又做了。

我的网站在本地完美运作

我的开发机器是Windows WAMP2设置 我的服务器是CentOS 5.5 APACHE 2.2 PHP5 seup

我在我已部署的codeigniter网站上获得了404,我真的无法弄清楚是什么问题,所以请帮我找到错误。

这是根网址。我没有设置dns所以它只是服务器的IP地址。它在我上传codeigniter之前显示了标准的apache页面。我查看了配置文件,看起来没问题。可能是文件权限错误?我在整个/ var / www / html目录中设置了chmod o + rw。 httpd中的error_log没有显示任何内容

我已经尝试过测试它是否是mod_rewrite模块,但是我创建了一个带有RewriteEngine ON的.htaccess文件的测试目录,它没有给我一个错误,所以不能这样。

在codeigniter中我已经在配置中将log_threshold设置为4,但我没有得到任何日志消息,所以如果它是pre->我就无法确定。 codeigniter错误,但我真的不认为它,因为它正在加载我的错误视图,仍然为什么没有写入任何日志,它是什么?

任何帮助都会非常感激,因为我正在冒烟让这个工作......

更新 感谢@jondavidjohn我发现直接命中控制器IE:

http://addr/index.php/GeoController/markers/

将向我提供控制器特定错误说:

无法找到您的型号“modelname”

解决 感谢@jondavidjohn和@timdream为我提供了解决这个问题的线索。这是一个命名问题,我的文件名是camelcased,而且它们只能从我现在理解的那么小,所以ROUTE是无用的,因为它导致Site,但是应该导致站点,尽管我有一个站点。 php我必须改变它和到site.php的路线

4 个答案:

答案 0 :(得分:4)

确保您在system/application/config/config.php中拥有正确的设置..特别注意

$config['base_url'] = "http://www.example.com";

确保您放入网站的根域,同时检查路由配置并确保在system/application/config/routes.php

中设置了正确的默认控制器

答案 1 :(得分:2)

我最近开始使用全新安装的codeignitor 3.0并且在我的开发服务器(Windows)上没有问题,然后当我移动到我的实时服务器(Linux)时,我开始收到404错误。

这样做的原因是,在3.0中,您应该将控制器/模型的第一个字母以及文件名大写。

e.g。

class Test_model扩展了CI_Model {

Test_model.php

希望这有助于一些人来到这里!

供参考:

http://www.codeigniter.com/userguide3/installation/upgrade_300.html

答案 2 :(得分:1)

$config['uri_protocol']也可以发挥作用。它默认为AUTO,它会自动查找包含实际URL的环境变量。

当我从mod_php为我的服务器切换到php-cgi时,我的网络应用程序失败了。将配置更改为REQUEST_URI可解决问题。我通过挖掘phpinfo()输出找到了阀门,你可以尝试这样做。

答案 3 :(得分:0)

我的第一个赌注是你正在开发这个并修改.htaccess文件。

然而,如果你从Windows开始 - > Linux系统更改(dev on Win,prod on nix)然后你必须记住Controller名称,如果windows上的文件是“Home.php”,你在配置中使用“home.php”作为你的默认路由,然后它会失败..因为没有“home.php”文件。

Home.php != home.php

Linux区分大小写。检查一下,这可能是一件简单的事情,但可能会造成障碍。

我再次猜测是因为缺乏细节。