CodeIgniter PHP Apache 500 Внутренняя ошибка сервера - PullRequest
16 голосов
/ 13 июля 2011

Я сделал проект в CodeIgniter. На моем локальном хосте все работает нормально, но на удаленном сервере выдается «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]

Ответы [ 5 ]

36 голосов
/ 13 июля 2011

Откройте httpd.conf, обычно расположенный в каталоге установки Apache в windows

/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 Http Server, используя команду apache -k restart в Windows или service httpd restart в Unix-системах. Вы также используете интерфейс XAMPP / Wamp для перезапуска Apache в системах Windows.

Далее создайте .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]

Далее Найти файл конфигурации 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'] = '';

Теперь история окончена. Все должно работать нормально. Вы можете найти больше информации о httpd.config по Apache Module mod_rewrite . Надеюсь, это поможет вам. Спасибо !!

8 голосов
/ 07 марта 2015

Отправка этого сообщения, на всякий случай, если это кому-нибудь поможет ...

Другие ответы на этот вопрос предполагают, что у вас есть доступ к файлам конфигурации apache.Но если вы работаете на платформе общего хостинга и не имеете доступа к каталогам, отличным от тех, в которых вы должны хранить свои файлы: хитрость заключалась в том, чтобы заставить php выдать все ошибки, даже если apache не смог.

Откройте «index.php», который находится в корневой папке вашей установки 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;
......

Внесение вышеуказанного изменения сразу стало отображать, что было не так с кодом, и я смог его исправить и получить егои запуск.

Не забудьте установить свою среду codeigniter на "производство", как только вы закончите ее исправлять.

3 голосов
/ 13 июля 2011

Вероятно, причина объяснена в error_log. Есть ли ошибка в корневом каталоге сайта? Есть ли где-нибудь еще папка журналов? Причина будет подробно описана там.

1 голос
/ 29 апреля 2017

попробуйте это:

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

Возможно, у вас проблема с файлом htaccess . Это также помогло мне.

0 голосов
/ 11 июля 2012

Я решил эту ошибку.

Мне дали другое имя базы данных, я изменил следующие шаги:

  1. Я создал базу данных на сервере, используя cpanel
  2. Я создал пользователя
  3. Я назначил ранее созданную базу данных пользователю
  4. Я изменил настройки базы данных с помощью имени пользователя, имени базы данных и т. Д.
...