CodeIgniter PHP Apache 500内部服务器错误

ale*_*lex 16 php apache .htaccess mod-rewrite codeigniter

我在CodeIgniter中做了一个项目.它在我的localhost上工作正常,但在远程服务器上给出了"500 Internal Server Error".这是我的.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]
Run Code Online (Sandbox Code Playgroud)

Mad*_*ota 36

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

/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.*

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

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

# 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]
Run Code Online (Sandbox Code Playgroud)

Next查找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'] = '';
Run Code Online (Sandbox Code Playgroud)

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


jah*_*eth 8

发布这个,以防它有助于某人...

这个问题的其他答案假设您可以访问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;
......
Run Code Online (Sandbox Code Playgroud)

进行上述更改后立即开始显示代码的错误,我能够修复它并启动并运行.

完成修复后,不要忘记将codeigniter环境设置为"生产".


jay*_*isc 5

原因很可能在 error_log 中有解释。网站根目录下有error_log吗?其他地方是否有日志文件夹?原因将在那里详细说明。