2013-07-17 73 views
48

我的網站只有4-5個靜態頁面。 index.html & index.php都存在。 index.html工作正常。如果我更改爲index.php,則爲500 Internal Server Error。我不知道我的錯誤在哪裏?500內部服務器錯誤PHP文件不適用於html

注: 如果我使用的.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,它顯示正確。

謝謝...顯示

+0

你是在你的地址欄中輸入/index.php還是你真的將目錄索引改爲index.php?還請發佈index.php文件中包含的代碼! –

+4

檢查你的日誌(很可能是'/ var/log/apache/error.log'或'/ var/log/httpd/error.log');但我猜你的PHP文件有錯誤。 – Amadan

+0

可能您的php代碼有一些錯誤 –

回答

105

500內部服務器錯誤,如果你的PHP代碼有致命錯誤,但錯誤顯示被關閉。你可以試試這個,看看錯誤本身,而不是500錯誤頁面:

在你的PHP文件:

ini_set('display_errors', 1); 

在.htaccess文件:

php_flag display_errors 1 
+1

我不是有.htaccess文件 – KarSho

+2

@ KarSho你可以創建它,雖然 – Hast

+1

只是因爲有一個.htaccess文件並不意味着apache將要使用它 – Orangepill

1

我知道這問題是舊的,但是我在Windows 8.1上遇到了這個問題,同時嘗試使用.htaccess文件進行重寫。我的解決辦法很簡單,我忘了修改下面一行在httpd.conf

#LoadModule rewrite_module modules/mod_rewrite.so 

LoadModule rewrite_module modules/mod_rewrite.so 

重啓apache的顯示器,目前一切運作良好。只是將其作爲答案發布,因爲將來有人可能會通過簡單的修復來解決同一問題。

祝你好運!

1

我有這個問題,因爲我試圖連接到MySQL,但我沒有所需的軟件包。我想出了@ Amadan的評論來檢查錯誤日誌。在我的情況下,我有錯誤:Call to undefined function mysql_connect()

如果您的PHP文件有任何代碼與My-SQL db連接,那麼您可能需要先安裝php5-mysql。我得到這個錯誤,因爲我沒有安裝它。我所有的文件權限都很好。在Ubuntu中,你可以通過下面的命令來安裝它:

sudo apt-get install php5-mysql

0

谷歌引導我在這裏,但它並沒有解決我的,這是一個非常普遍的問題,有各種各樣的原因,所以我張貼了我的問題並提供解決方案以供參考,以供任何人稍後閱讀。

500錯誤的另一個可能的原因是語法錯誤header(...)功能,像這樣的:

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

注意應該有服務器協議和狀態代碼之間的空間,所以它應該是:

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

所以我建議檢查你的http頭調用,如果你在你的代碼中。

1

它正在修改.htaccess文件中爲我修復的行結尾(從Windows CRLF到Unix LF)。

+1

我想這是爲我。謝謝:) +1 –

46

PHP文件的權限必須設置爲644.任何包含PHP文件和PHP訪問權限(例如上傳文件)的文件夾必須具有設置爲755的權限.PHP在處理任何文件或文件夾時將運行500錯誤有權限設置爲777!

+2

如何改變這些權限? –

+1

將所有文件權限更改爲755,並將主文件夾更改爲755爲我解決問題 – Oussaki

+0

將我保存!謝謝。 – Scooter