【问题标题】:CodeIgniter PHP Apache 500 Internal Server ErrorCodeIgniter PHP Apache 500 内部服务器错误
【发布时间】:2011-10-04 05:15:22
【问题描述】:

我在 CodeIgniter 中做了一个项目。它在我的本地主机上运行良好,但在远程服务器上给出“500 内部服务器错误”。这是我的.htaccess 文件内容:

RewriteEngine On
RewriteBase /ezgov
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【问题讨论】:

  • 我的 codeigniter 出现同样的错误。托管公司说我的代码有问题,但在本地主机上没有问题。无法指定一个链接,因为每次不同的链接都会出现 500 错误..

标签: php apache .htaccess codeigniter mod-rewrite


【解决方案1】:

试试这个:

RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

您的 htaccess 文件可能有问题。它也帮助了我。

【讨论】:

    【解决方案2】:

    发布这个,以防万一它对某人有帮助...

    此问题的其他答案假定您有权访问 apache 的配置文件。但是,如果您在共享托管平台上并且无法访问您应该托管文件的目录以外的目录:诀窍是强制 php 抛出所有错误,即使 apache 不能。

    打开位于您的 codeigniter 安装根文件夹中的“index.php”;

    /*switch to development environment*/
    define('ENVIRONMENT', 'development');
    
    if (defined('ENVIRONMENT'))
    {
        switch (ENVIRONMENT)
            {
                case 'development':
                error_reporting(E_ALL);
                /*added line below*/
                ini_set('display_errors', '1');
                break;
    ......
    

    进行上述更改后立即开始显示代码有什么问题,我能够修复它并启动并运行它。

    完成修复后,别忘了将 codeigniter 环境设置为“生产”。

    【讨论】:

    • 试过了,屏幕上没有显示错误。在哪里可以找到这些错误?
    • 检查浏览器的控制台,确认它确实是错误 500 还是只是一个空白页面。
    • 我试过你的代码,错误消失了,但页面是空白的。控制台中什么也没有出现。
    • 我在尝试这个解决方案之前遇到了服务器错误,在我添加了ini_set('display_errors', '1'); 之后,我知道问题出在哪里,这是我的 constant.php 文件中的语法错误。
    【解决方案3】:

    在windows中打开httpd.conf一般位于Apache安装目录

    /apache/conf/httpd.conf

    /etc/httpd/httpd.conf

    在基于 Unix 的系统中。 httpd.conf 是一个 Apache 配置文件,里面存储了关于服务器的各种信息。

    搜索模块mod_rewrite.so 或(mod_rewrite.c 在极少数情况下)。 mod_rewrite 模块用于动态重写请求的 URL。大多数情况下,您会发现处于注释状态。

    #LoadModule rewrite_module modules/mod_rewrite.*

    这里#字符代表它被评论或禁用。

    LoadModule rewrite_module modules/mod_rewrite.*

    删除 # 并在 windows 中使用命令 apache -k restart 或在 unix 系统中使用 service httpd restart 命令重新启动 Apache Http Server。您还可以使用 XAMPP/Wamp UI 在 Windows 系统中重新启动 Apache。

    接下来在您的 CodeIgniter 项目所在的根目录中创建 .htaccess 文件并粘贴以下代码

    # index file can be index.php, home.php, default.php etc.
    DirectoryIndex index.php
    
    # Rewrite engine
    RewriteEngine On
    
    # condition with escaping special chars
    RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
    

    下一步找到CodeIgniter的配置文件,一般位于其配置目录下。

    ./application/config/config.php

    打开文件并将$config['index_page'] 值设为空。看起来像这样

    /*
      |--------------------------------------------------------------------------
      | Index File
      |--------------------------------------------------------------------------
      |
      | Typically this will be your index.php file, unless you've renamed it to
      | something else. If you are using mod_rewrite to remove the page set this
      | variable so that it is blank.
      |
     */
    $config['index_page'] = '';
    

    现在故事结束了。一切都应该正常工作。您可以在 Apache Module mod_rewrite 找到有关 httpd.config 的更多信息。希望这对您有所帮助。谢谢!!

    【讨论】:

    • 当我在另一个网站的子文件夹中有 CI 时,这解决了我的问题。谢谢大佬。
    • 你太棒了。我将项目转移到同一个文件夹、同一个数据库、同一个身份验证、同一个 URL 但问题仍然存在,跟着你和 :)
    • 谢谢。除了 httpd.conf 步骤之外的所有步骤都做了(就像在 VPS 上一样,这会很困难)并且它工作正常。
    【解决方案4】:

    我解决了这个错误。

    我被赋予了不同的数据库名称,我已经通过以下步骤进行了更改:

    1. 我已经使用 cpanel 在服务器中创建了数据库
    2. 我创建了一个用户
    3. 我已将之前创建的数据库分配给用户
    4. 我用用户名和数据库名等更改了数据库设置。

    【讨论】:

      【解决方案5】:

      错误日志中可能解释了原因。网站根目录下是否有error_log?其他地方有日志文件夹吗?原因会在里面详述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-03
        • 2018-02-22
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        • 2015-11-22
        • 2018-11-14
        相关资源
        最近更新 更多