web-dev-qa-db-fra.com

CodeIgniter PHP Erreur de serveur interne Apache 500

J'ai fait un projet dans CodeIgniter. Cela fonctionne bien sur mon hôte local, mais donne "500 Internal Server Error" sur le serveur distant. Ceci est le contenu de mon fichier .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

Ouvrez httpd.conf généralement situé dans le répertoire d'installation d'Apache sous Windows 

/Apache/conf/httpd.conf

et 

/etc/httpd/httpd.conf

dans les systèmes Unix. httpd.conf est un fichier de configuration Apache qui stocke diverses informations sur le serveur.

Recherchez le module mod_rewrite.so ou (mod_rewrite.c dans de rares cas). Le module mod_rewrite est développé pour réécrire les URL demandées à la volée. La plupart du temps, vous le trouverez dans l'état commenté.

#LoadModule rewrite_module modules/mod_rewrite.*

Ici, le caractère # indique qu'il est commenté ou désactivé.

LoadModule rewrite_module modules/mod_rewrite.*

Supprimez # et redémarrez le serveur Apache Http à l'aide de la commande Apache -k restart sous Windows ou service httpd restart sous un système Unix. Vous utilisez également l’interface utilisateur XAMPP/Wamp pour redémarrer Apache sous Windows.

Créez ensuite le fichier .htaccess dans le répertoire racine où se trouve votre projet CodeIgniter et collez le code suivant.

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

Suivant Recherchez le fichier de configuration CodeIgniter, généralement situé dans son répertoire de configuration.

./application/config/config.php

Ouvrez le fichier et videz la valeur $config['index_page']. qui ressemble à ceci

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

Maintenant, l'histoire est terminée. Tout devrait bien fonctionner. Vous pouvez trouver plus d'informations sur httpd.config à Module Apache mod_rewrite . J'espère que cela vous aide. Merci!!

36
Madan Sapkota

Afficher ceci, juste au cas où cela pourrait aider quelqu'un ...

D'autres réponses à cette question supposent que vous ayez accès aux fichiers de configuration d'Apache. Mais si vous êtes sur une plate-forme d'hébergement partagé et n'avez pas accès à des répertoires autres que ceux où vous êtes censé héberger vos fichiers: le truc était de forcer php à renvoyer toutes les erreurs même si Apache ne le pouvait pas.

Ouvrez "index.php" qui réside dans le dossier racine de votre installation de codeigniter;

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

Faire le changement ci-dessus a immédiatement commencé à afficher ce qui n'allait pas avec le code et j'ai pu le corriger et le mettre en marche.

N'oubliez pas de définir votre environnement codeigniter sur "production" une fois que vous avez fini de le réparer.

8
jahackbeth

Il est probable que la raison soit expliquée dans error_log. Existe-t-il un journal des erreurs dans le répertoire racine du site Web? Y at-il un dossier de journaux quelque part ailleurs? La raison sera détaillée ici.

3
jaydisc

essayez ceci:

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

Vous avez probablement un problème avec votre htaccess fichier. Cela m'a aidé aussi.

1
Hamed

J'ai résolu cette erreur.

On m'a donné un nom de base de données différent, j'ai changé avec les étapes suivantes:

  1. J'ai créé une base de données sur le serveur à l'aide de cpanel
  2. J'ai créé un utilisateur 
  3. J'ai attribué la base de données créée précédemment à l'utilisateur
  4. J'ai changé les paramètres de la base de données avec nom d'utilisateur et nom de base, etc.
0
ShivarajRH