500 Внутренняя ошибка сервера для файла php не для html

Мой сайт имеет только 4-5 статических страниц. index.html и index.php. index.html работает нормально. Если я перейду на index.php, он даст 500 Internal Server Error. Я не знаю, где моя ошибка?

Примечание: Если я использую .htaccess файл с php_flag display_errors 1,

Он показывает Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Если я использую .htaccess файл с empty,

Показывая Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

И если я даю ../contact-us.php, он отображается правильно.

Спасибо...

Ответ 1

500 Внутренняя ошибка сервера отображается, если ваш php-код имеет фатальные ошибки, но отображение ошибок отключено. Вы можете попробовать это, чтобы увидеть ошибку, а не 500 страниц ошибок:

В вашем php файле:

ini_set('display_errors', 1);

В файле .htaccess:

php_flag display_errors 1

Ответ 2

PHP файл должен иметь разрешения 644. Любая папка, содержащая файлы PHP и доступ к PHP (например, для загрузки файлов), должна иметь разрешения, равные 755. PHP будет запускать ошибку 500 при работе с любым файлом или папкой, которая имеет разрешения, установленные на 777!

Ответ 3

Я знаю, что этот вопрос старый, однако я столкнулся с этой проблемой в Windows 8.1, пытаясь использовать файлы .htaccess для перезаписи. Мое решение было простым, я забыл изменить следующую строку в httpd.conf

#LoadModule rewrite_module modules/mod_rewrite.so

к

LoadModule rewrite_module modules/mod_rewrite.so

Перезагрузили монитор Apache, теперь все работает хорошо. Просто опубликуйте это как ответ, потому что кто-то в будущем может столкнуться с одной проблемой с простым исправлением.

Удачи!

Ответ 4

У меня была эта проблема, потому что я пытался подключиться к MySQL, но у меня не было требуемого пакета. Я понял это из-за комментария @Amadan, чтобы проверить журнал ошибок. В моем случае у меня была ошибка: Call to undefined function mysql_connect()

Если ваш файл PHP имеет какой-либо код для подключения к базе данных My-SQL, вам может потребоваться сначала установить php5-mysql. Я получал эту ошибку, потому что я ее не установил. Все мои права на файлы были хорошими. В Ubuntu вы можете установить его с помощью следующей команды:

sudo apt-get install php5-mysql

Ответ 5

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

Другой возможной причиной ошибки 500 является синтаксическая ошибка в функции header(...), например:

header($_SERVER['SERVER_PROTOCOL'] . '200 OK');

Помните, что между протоколом сервера и кодом состояния должно быть место, поэтому оно должно быть:

header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');

Поэтому я предлагаю проверить ваш HTTP-заголовок, если он есть в вашем коде.

Ответ 6

Он менял окончание строки (от Windows CRLF до Unix LF) в файле .htaccess, который исправил его для меня.