web-dev-qa-db-ja.com

CodeIgniter PHP Apache 500内部サーバーエラー

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]
16
alex

通常、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.*

#を削除し、WindowsではApache -k restartコマンドを、UNIXシステムではservice httpd restartコマンドを使用してApache Httpサーバーを再起動します。また、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の詳細を確認できます。これがお役に立てば幸いです。ありがとう!!

36
Madan Sapkota

これを投稿すると、誰かを助けるために...

この質問に対するその他の回答は、Apacheの構成ファイルにアクセスできることを前提としています。しかし、共有ホスティングプラットフォームを使用していて、ファイルをホストすることになっているディレクトリ以外のディレクトリにアクセスできない場合は、Apacheができなくても、phpにすべてのエラーをスローさせるのがトリックでした。

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;
......

上記の変更を行うと、すぐにコードの問題の表示が始まり、修正してそれを実行できるようになりました。

修正が完了したら、コードイグナイター環境を「本番」に設定することを忘れないでください。

8
jahackbeth

原因はerror_logで説明されている可能性があります。 Webサイトのルートディレクトリにerror_logがありますか?他の場所にログフォルダーはありますか?理由はそこに詳述されています。

3
jaydisc

これを試してください:

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

おそらくあなたはあなたに問題があります htaccess ファイル。それも私を助けました。

1
Hamed

このエラーを解決しました。

別のデータベース名が与えられましたが、次の手順で変更しました:

  1. Cpanelを使用してサーバーにデータベースを作成しました
  2. ユーザーを作成しました
  3. 以前に作成したデータベースをユーザーに割り当てました
  4. ユーザー名やデータベース名などでデータベース設定を変更しました。
0
ShivarajRH