500 php 文件的内部服务器错误,不适用于 html

我的网站只有4-5静态页面。HtmlIndex.php都在。.html 工作正常。如果我改为 index.php,它会给出 500 Internal Server Error。我不知道我错在哪里?

注: 如果我在 php_flag display_errors 1中使用 . htaccess文件,

正在显示 Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

如果我在 empty中使用 . htaccess文件,

正在显示 Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

如果我给 ../contact-us.php,它显示正确。

谢谢..。

452951 次浏览

500 Internal Server Error is shown if your php code has fatal errors but error displaying is switched off. You may try this to see the error itself instead of 500 error page:

In your php file:

ini_set('display_errors', 1);

In .htaccess file:

php_flag display_errors 1

I know this question is old, however I ran into this problem on Windows 8.1 while trying to use .htaccess files for rewriting. My solution was simple, I forgot to modify the following line in httpd.conf

#LoadModule rewrite_module modules/mod_rewrite.so

to

LoadModule rewrite_module modules/mod_rewrite.so

Restarted the apache monitor, now all works well. Just posting this as an answer because someone in the future may run across the same issue with a simple fix.

Good luck!

I was having this problem because I was trying to connect to MySQL but I didn't have the required package. I figured it out because of @Amadan's comment to check the error log. In my case, I was having the error: Call to undefined function mysql_connect()

If your PHP file has any code to connect with a My-SQL db then you might need to install php5-mysql first. I was getting this error because I hadn't installed it. All my file permissions were good. In Ubuntu, you can install it by the following command:

sudo apt-get install php5-mysql

Google guides me here but it didn't fix mine, this is a very general question and there are various causes, so I post my problem and solution here for reference in case anyone might read this later.

Another possible cause of 500 error is syntax error in header(...) function, like this one:

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

Be aware there should be space between server protocol and status code, so it should be:

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

So I suggest check your http header call if you have it in your code.

It was changing the line endings (from Windows CRLF to Unix LF) in the .htaccess file that fixed it for me.

A PHP file must have permissions set to 644. Any folder containing PHP files and PHP access (to upload files, for example) must have permissions set to 755. PHP will run a 500 error when dealing with any file or folder that has permissions set to 777!