it-swarm.dev

CodeIgniter PHP Apache 500 - Interner Serverfehler

Ich habe ein Projekt in CodeIgniter gemacht. Es funktioniert gut auf meinem localhost, aber es gibt "500 Internal Server Error" auf dem Remote-Server. Dies ist der Inhalt meiner .htaccess-Datei:

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

Öffnen Sie die Datei httpd.conf, die sich normalerweise im Apache-Installationsverzeichnis in Windows befindet 

/Apache/conf/httpd.conf

und 

/etc/httpd/httpd.conf

in Unix-basierten Systemen. httpd.conf ist eine Apache-Konfigurationsdatei, in der verschiedene Informationen zum Server gespeichert werden.

Suchen Sie nach dem Modul mod_rewrite.so oder (in seltenen Fällen mod_rewrite.c). Das Modul mod_rewrite wurde entwickelt, um die angeforderten URLs schnell neu zu schreiben. Die meiste Zeit finden Sie in kommentiertem Zustand.

#LoadModule rewrite_module modules/mod_rewrite.*

Hier steht # Zeichen dafür, dass es kommentiert oder deaktiviert ist.

LoadModule rewrite_module modules/mod_rewrite.*

Entfernen Sie # und starten Sie den Apache Http Server erneut mit dem Befehl Apache -k restart in Windows oder service httpd restart in Unix-Systemen. Sie verwenden XAMPP/Wamp UI auch, um Apache in Windows-Systemen neu zu starten.

Erstellen Sie als Nächstes eine .htaccess-Datei im Stammverzeichnis, in dem sich Ihr CodeIgniter-Projekt befindet, und fügen Sie den folgenden Code ein

# 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]

Next Find CodeIgniter-Konfigurationsdatei, die sich im Allgemeinen im Konfigurationsverzeichnis befindet.

./application/config/config.php

Öffnen Sie die Datei und machen Sie den $config['index_page']-Wert leer. das sieht so aus

/*
  |--------------------------------------------------------------------------
  | 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'] = '';

Nun ist die Geschichte beendet. Alles sollte gut funktionieren. Weitere Informationen zu httpd.config finden Sie unter Apache Module mod_rewrite . Hoffe das hilft dir. Vielen Dank!!

36
Madan Sapkota

Posting dies, nur für den Fall, dass es jemandem hilft ...

Andere Antworten auf diese Frage setzen voraus, dass Sie Zugriff auf die Konfigurationsdateien von Apache haben. Wenn Sie sich jedoch auf einer Shared-Hosting-Plattform befinden und keinen Zugriff auf andere Verzeichnisse haben, als die, in denen Sie Ihre Dateien hosten sollen: Der Trick bestand darin, PHP zu zwingen, alle Fehler zu werfen, selbst wenn Apache dies nicht konnte.

Öffnen Sie "index.php", das sich im Stammordner Ihrer Codeigniter-Installation befindet.

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

Nachdem ich die oben genannte Änderung vorgenommen hatte, wurde sofort angezeigt, was mit dem Code falsch war, und ich konnte ihn reparieren und in Betrieb nehmen.

Vergessen Sie nicht, Ihre Codeigniter-Umgebung auf "Produktion" zu setzen, wenn Sie mit der Korrektur fertig sind.

8
jahackbeth

Es ist wahrscheinlich, dass der Grund im error_log erklärt wird. Befindet sich im Stammverzeichnis der Website ein error_log? Gibt es woanders einen Protokollordner? Der Grund wird dort detailliert beschrieben.

3
jaydisc

probiere das aus:

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

Wahrscheinlich haben Sie Probleme mit Ihrem htaccess Datei. Es hat mir auch geholfen.

1
Hamed

Ich habe diesen Fehler behoben.

Mir wurde ein anderer Datenbankname gegeben, ich habe mich mit folgenden Schritten geändert:

  1. Ich habe die Datenbank auf dem Server mit Cpanel erstellt
  2. Ich habe einen Benutzer angelegt 
  3. Ich habe die zuvor erstellte Datenbank dem Benutzer zugewiesen
  4. Ich habe die Datenbankeinstellungen mit Benutzername und Datenbankname usw. geändert.
0
ShivarajRH