Codeigniter 500内部サーバーエラー
-
28-10-2019 - |
質問
Codeigniterを使用して書かれたPHPスクリプトをダウンロードしました。 LocalHostから実行すると、管理者フォルダーに移動すると、LocalHostが再び表示されます。また、Webホストから実行するときは、500の内部サーバーエラーが表示されます。
からサイトを実行します http:// localhost/myproj できます。それから私がにある管理者ページに行こうとするとき http:// localhost/myproj/管理者, 、500の内部サーバーエラーが発生します。
ここで、これは.htaccessファイルの間違ったコードによるものである可能性があることを読みました。これは私の現在の.htaccessファイルです
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
私を助けてください。私はそれが非常に小さな問題かもしれないことを知っていますが、私はエラーを見つけることができません。
解決
500エラー(CodeIgniterを使用)の問題は、異なるApache設定で、PHP構成にエラーが発生したときに500エラーが表示されます。
Codeigniterで500エラーをトリガーする方法は次のとおりです。
- スクリプトのエラー(PHPの不正行為、パッケージの欠落など...)
- PHP「致命的なエラー」
Apacheエラーログを確認してください。そこには興味深い情報があるはずです。
他のヒント
他の誰かがこの問題に出くわした場合に備えて、私は古いCodeigniterプロジェクトを継承し、それをインストールするのに多くの問題を抱えていました。
私はサイトのローカルインストールを作成しようとして多くの時間を無駄にし、すべてを試しました。最終的に、解決策は簡単でした。
問題は、古いCodeigniterバージョン(1.7以降など)がPHP 5.3で動作しないことです。解決策は、PHP 5.2または古いものに切り替えることです。
サイトURLからindex.phpを削除しようとしていますか?
あなたを設定してみてください $config['uri_protocol']
に REQUEST_URI
それ以外の AUTO
.
httpd.conf(apache構成ファイル)でコメントを削除します。
LoadModule rewrite_module modules/mod_rewrite.so
これを.htaccessファイルに試してください:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule >
サブディレクトリでcodeigniterを実行するたびに設定します RewriteBase
それに。そのように設定してみてください /myproj/
それ以外の /
.
これはおそらくこのスレッドにはこれ以上関連性がありませんが、誰かに役立つことを願っています。コントローラーが(Crappy)サーバーで実行されたPHPバージョンでサポートされていない配列を返すことができたため、過去1時間に500のエラーがありました。些細なように見えますが、Codeigniterエラーの特徴がありました。
私は使用する必要がありました:
class emck_model extends CI_Model {
public function getTiles(){
return array(...);
}
}
それ以外の
class emck_model extends CI_Model {
public function getTiles(){
return [...];
}
}
乾杯
私は遅れていることを知っていますが、これは誰かを助けるでしょう。
エンジンの書き換えが確認されているかどうかを確認してください 有効になっています.
そうでない場合は、エンジンを書き直し、サーバーを再起動します。
sudo a2enmod rewrite
sudo service apache2 restart
WampServerバージョン2.5の場合、Apache構成を次のように変更します
httpd.conf(apache構成ファイル):から
#LoadModule rewrite_module modules/mod_rewrite.so**
に、#を削除します
LoadModule rewrite_module modules/mod_rewrite.so**
これは私にうまく機能しています
これは私にとってうまくいきます
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule >
あなたのルートを確認してください index.php
ファイルには正しい許可があり、その許可は 0755
また 0644