【问题标题】:cakePHP - 404- page not found error, when deploying on a different machinecakePHP - 404- page not found 错误,在另一台机器上部署时
【发布时间】:2011-08-26 17:26:01
【问题描述】:

我正在尝试将 cakephp 应用程序部署到我的对等系统中,但对于所有请求,我都收到 404 错误。 这不是 cakephp 404 错误,而是正常的 webserver 404 page not found 错误。 :(。我们都使用 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 中取消注释并设置 date.timezone
  4. 将webroot内容复制到“Library/WebServer/Documents”并修改index.php以适应他的机器(设置3个相关路径到CORE、APP和CAKE文件夹)
  5. 确保数据库连接良好。
  6. 出于调试目的,修改 core.php 并设置 Configure::write('debug',3);

主页从 AJAX 调用中获取数据。当我转到 http://localhost 时,会呈现 layouts/default.ctp 中的页眉和页脚内容,但例如 http://localhost/posts/showmyposts 的 ajax 调用会出现 404(未找到)错误。如果我转到 http://localhost/users/login 等其他 URL,我会收到正常的网络服务器 404 错误。

未找到

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

在我的 apache 错误日志中,我得到的错误是

[2011 年 5 月 16 日星期一 16:19:48] [错误] [客户端 ::1] 文件不存在:/Library/WebServer/Documents/users,引用者:http://localhost/ 我的 cakephp 安装正确吗?

【问题讨论】:

    标签: cakephp http-status-code-404


    【解决方案1】:

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

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

    您是否在 Apache 配置文件中打开了 FollowSymLinks

    【讨论】:

    • 我的 webroot 文件夹缺少 .htaccess 文件。非常感谢 !现在一切都很好。
    【解决方案2】:

    我遇到了同样的问题。

    我通过在 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>
    

    它对我有用。

    【讨论】:

      【解决方案3】:

      我必须在 两个 的地方修改我的 httpd.conf 文件(它的位置因您的 Linux 安装而异——我的位于 /etc/httpd/conf/httpd.conf)才能得到它在 CentOS 上工作。

      除了 CakePHP 文档中提到的 &lt;Directory /var/www&gt; 之外,如果您再往下走一点,您会看到不允许重写的 &lt;Directory "/var/www/html"&gt;

      AllowOverride None 更改为AllowOverride All

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

      【讨论】:

      • 谢谢哥们!这里所有解决方案中只有您的解决方案对我有用。
      【解决方案4】:

      如果以上方案都没有效果请确保apache rewrite模块开启

      在 debian 上默认禁用

      a2enmod rewrite
      service apache2 restart
      

      【讨论】:

        【解决方案5】:

        在我的例子中,我发现所有的帖子控制器请求 (/posts/*) 都返回 404。其他控制器页面工作正常。

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

        【讨论】:

        • 感谢您分享您的经验
        猜你喜欢
        • 2012-06-28
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 2020-12-05
        • 1970-01-01
        • 2015-04-02
        • 2011-12-13
        • 2016-07-30
        相关资源
        最近更新 更多