用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7464|回复: 5
收起左侧

[已解决] LINUX下的CI问题,404,非大小写引起(已经解决)

[复制链接]
发表于 2009-11-25 12:39:50 | 显示全部楼层 |阅读模式
本帖最后由 taoli 于 2009-11-26 11:08 编辑

今天碰到一个问题,CI在美

国的一个VPS上可以载入默认的控制器,请看url:

已结帖,希望对碰到404错误的兄弟们有帮助,之前在论坛上搜了一圈,发现有不少兄弟碰到,可能是你的LINUX下的APACHE版本低的缘故吧,我本地的2.3没有手工开启PATH INFO一样可以跑

默认的控制器是test.php,但是访问它就报了404错误(apache的404错误),

访问其他的控制器一样都是404错误,甚至在原来的index.php加上/,也回报404错误

(ci的uri协议从AUTO,QUERY_STRING,REQUEST_URI貌似都是一样的结果)


此程序我使用的是ci 1.72的干净版本,没有写入任何其他程序,在本地的LAMP和NGINX服务器上都OK

(NGINX上之前也发生一样的错误,是因为服务器变量上PATH_INFO没有设定,设定以后就OK了)本地的LAMP环境下没有配置重写和$_SERVER['PATH_INFO'],也是

正常运行的,但是同样是LAMP环境,这个美国的VPS就报错,非常郁闷

控制器和文件名全部小写,如果使这里出了问题,那么我想我在LAMP和NGINX下也是跑不起来的
发表于 2009-11-25 14:23:46 | 显示全部楼层
首先,这肯定不是大小写问题。
其次,这是服务器环境问题,服务器不支持 PATH_INFO,你可以试试你的探针,比如 http://www.enf.cn/php.php/dddd 也是 404 错误,因为你的服务器不支持 PATH_INFO。
apache2filter 模式,我还是第一次见到,一般都是 apache2handler 模式,可能和这个有关,我也不是很清楚。
不支持  PATH_INFO 的话你只能用 query_string 模式了,或者自己写 rewrite 模拟 path_info
 楼主| 发表于 2009-11-25 15:31:00 | 显示全部楼层
谢谢斑竹的回答,我会去查一下apache2filter和apache2handler的区别,不过最诡异的事情是http://submit.enf.cn/recommend/ 这里在同一个服务器的不同目录里还跑着一个CI写的小系统,它确实正常的,让我实在摸不着头脑了,同一个服务器下的不同目录就会出问题么?
发表于 2009-11-25 15:51:23 | 显示全部楼层
那很简单,看一下他的 config.php 文件,还有他如果有 .htaccess 文件也要看一下,还有 apache 的 conf 文件
 楼主| 发表于 2009-11-26 09:55:10 | 显示全部楼层
回版主的话,config.php看了一下,除了base_url和去掉INDEX.PHP以外,其他的都一样。他用了CI里面的重些例子去掉了INDEX.PHP,所以有个.htaccess文件,其他的暂时没发现有啥不同,另外,请问PHP在运行的时候能动态的改变APACHE的配置文件么,应该不可以吧?
 楼主| 发表于 2009-11-26 11:05:05 | 显示全部楼层
本帖最后由 taoli 于 2009-11-26 11:13 编辑

问题解决了,仔细看了一下.htaccess文件

内容如下:
AcceptPathInfo On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteRule ^(.*).html $1 [L]   L]   

看到第一行代码,相信大家都知道原因了,是的,手工打开了path_info,昨天折腾我一天却没有想起来看.htaccess文件(因为权限问题我没有办法编辑httpd.conf),还是斑竹的细心提醒了我啊,linux下有碰到404问题打不开控制器的兄弟,可以吧这个另存为.htaccess文件,放到你程序的根目录,同时附带重写效果,可以去掉index.php
本帖可以结贴了

本版积分规则