cakePHP - 404-页面未找到错误,在不同的计算机上部署时

时间:2011-05-16 19:53:19

标签: cakephp http-status-code-404

我正在尝试将cakephp应用程序部署到我的对等系统中,并且对于所有请求我都会收到404错误。 这不是cakephp 404错误,但是找不到正常的网络服务器404页面错误。 :(。我们都使用MAC OS 10.6。相同的代码在我的机器和生产系统上运行。我跟着在他的机器上部署的步骤。我正在使用cakephp高级安装,即webroot只包含index.php,css,js等.APP文件夹和CAKE文件夹位于其他地方。

  1. 取消注释/etc/apache2/httpd.conf中的“LoadModule php5_module ....”行
  2. 更改为AllowOverride All到目录 - /etc/apache2/httpd.conf中的“Library / WebServer / Documents”
  3. 取消注释并在/etc/php.ini
  4. 中设置date.timezone
  5. 将webroot内容复制到“Library / WebServer / Documents”并修改index.php以适应他的机器(设置3个相关路径到CORE,APP和CAKE文件夹)
  6. 确保数据库连接良好。
  7. 出于调试目的,修改了core.php并设置了Configure :: write('debug',3);
  8. 主页从AJAX调用中获取数据。当我转到http://localhost时,会呈现layouts / default.ctp中的页眉和页脚内容,但是例如http://localhost/posts/showmyposts的ajax调用会收到404(未找到)错误。如果我转到其他网址,例如http://localhost/users/login,我会收到正常的网络服务器404错误。

    未找到

    在此服务器上找不到请求的URL / users / login /。

    在我的apache错误日志中,我收到错误

    [Mon May 16 16:19:48 2011] [错误] [client :: 1]文件不存在:/ Library / WebServer / Documents / users,referer:http://localhost/ 我的cakephp安装是否正确?

5 个答案:

答案 0 :(得分:7)

听起来像mod_rewrite无法在该计算机上运行的问题。当您尝试运行默认的Cake安装时会发生什么?它是否加载CSS和所有?

您的应用目录(以及您的webroot目录)中是否有.htaccess个文件?

您的Apache配置文件中是否已启用FollowSymLinks

答案 1 :(得分:4)

我遇到了同样的问题。

我通过在public_html文件夹中创建.htaccess解决了这个问题,其中包含以下内容:

<IfModule mod_rewrite.c>
        RewriteEngine On
        #Rewrite CakePHP
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !server-status
        RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

它对我有用。

答案 2 :(得分:2)

我必须在两个位置修改我的httpd.conf文件(它的位置因Linux安装而异 - 我的位于/etc/httpd/conf/httpd.conf)让它在CentOS上运行。

除了CakePHP文档中提到的<Directory /var/www>之外,如果你向前走一点,你会看到<Directory "/var/www/html">不允许重写。

AllowOverride None更改为AllowOverride All

请务必使用sudo /sbin/service httpd restart重置apache。

答案 3 :(得分:2)

如果上述解决方案无效确保启用了apache重写模块

在debian上默认禁用

a2enmod rewrite
service apache2 restart

答案 4 :(得分:1)

在我的情况下,我遇到了所有帖子控制器请求(/ posts / *)都返回404的事实。其他控制器页面工作正常。

原来是因为我的网络根目录中有一个posts.sql文件。我移动文件后,一切正常。即使使用.sql扩展名,Cake的重写规则也会将请求映射到不存在的posts文件夹。