2013-07-17 51 views
48

Trang web của tôi chỉ có 4-5 trang tĩnh. index.html & index.php cả hai đều ở đó. index.html đang hoạt động tốt. Nếu tôi thay đổi thành index.php, nó sẽ đưa ra 500 Internal Server Error. Tôi không biết sai lầm của tôi ở đâu?500 Lỗi máy chủ nội bộ cho tệp php không phải cho html

Lưu ý: Nếu tôi sử dụng .htaccess tập tin với php_flag display_errors 1,

Nó cho thấy Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Nếu tôi sử dụng tập tin .htaccess với empty,

Nó cho thấy Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Và nếu tôi cung cấp cho ../contact-us.php, nó hiển thị chính xác.

Thanks ...

+0

Bạn có nhập /index.php vào thanh địa chỉ của mình hoặc bạn có thực sự thay đổi danh mục chỉ mục thành index.php không? Ngoài ra xin vui lòng gửi mã chứa trong tập tin index.php! –

+4

Kiểm tra nhật ký của bạn ('/ var/log/apache/error.log' hoặc'/var/log/httpd/error.log', rất có thể); nhưng tôi đoán tập tin PHP của bạn có lỗi. – Amadan

+0

có thể mã php của bạn có một số lỗi –

Trả lời

105

500 Internal Server Error được hiển thị nếu code php của bạn có lỗi gây tử vong nhưng lỗi hiển thị tắt. Bạn có thể thử này để xem các lỗi bản thân thay vì 500 trang báo lỗi:

Trong file php của bạn:

ini_set('display_errors', 1); 

Trong tập tin .htaccess:

php_flag display_errors 1 
+1

tôi không có .htaccess file – KarSho

+2

@KarSho bạn có thể tạo ra nó mặc dù – Hast

+1

chỉ vì có một tập tin .htaccess không có nghĩa là apache sẽ sử dụng nó – Orangepill

1

Tôi biết điều này câu hỏi là cũ, tuy nhiên tôi chạy vào vấn đề này trên Windows 8.1 trong khi cố gắng sử dụng các tập tin htaccess để viết lại. Giải pháp của tôi rất đơn giản, tôi quên để thay đổi dòng sau trong httpd.conf

#LoadModule rewrite_module modules/mod_rewrite.so 

để

LoadModule rewrite_module modules/mod_rewrite.so 

Khởi động lại màn hình apache, bây giờ tất cả hoạt động tốt. Chỉ cần đăng bài này như là một câu trả lời bởi vì ai đó trong tương lai có thể chạy trên cùng một vấn đề với một sửa chữa đơn giản.

Chúc may mắn!

1

Tôi đã gặp sự cố này vì tôi đã cố gắng kết nối với MySQL nhưng tôi không có gói yêu cầu. Tôi đã tìm ra nó vì nhận xét của @ Amadan để kiểm tra nhật ký lỗi. Trong trường hợp của tôi, tôi gặp lỗi: Call to undefined function mysql_connect()

Nếu tệp PHP của bạn có bất kỳ mã nào để kết nối với một db My-SQL thì bạn có thể cần phải cài đặt php5-mysql trước. Tôi đã nhận được lỗi này bởi vì tôi đã không cài đặt nó. Tất cả các quyền của tôi đều tốt. Trong Ubuntu, bạn có thể cài đặt nó bằng lệnh sau:

sudo apt-get install php5-mysql

0

Google hướng dẫn tôi đến đây nhưng nó không khắc phục được tôi, đây là một câu hỏi rất chung chung và có những nguyên nhân khác nhau, vì vậy tôi gửi vấn đề của tôi và giải pháp ở đây để tham khảo trong trường hợp ai đó có thể đọc sau này.

Một nguyên nhân có thể xảy ra 500 lỗi là lỗi cú pháp trong header(...) chức năng, như thế này một:

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

Hãy nhận biết cần có khoảng trống giữa giao thức máy chủ và mã trạng thái, vì vậy nó cần được:

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

Vì vậy, tôi khuyên bạn nên kiểm tra cuộc gọi tiêu đề http nếu bạn có nó trong mã của mình.

1

Nó đang thay đổi dòng kết thúc (từ Windows CRLF thành Unix LF) trong tệp .htaccess đã sửa nó cho tôi.

+1

Tôi đoán điều này là dành cho tôi. Cảm ơn :) +1 –

46

Tệp PHP phải có quyền được đặt thành 644. Bất kỳ thư mục nào chứa tệp PHP và quyền truy cập PHP (để tải lên tệp) phải có quyền được đặt thành 755. PHP sẽ chạy lỗi 500 khi xử lý bất kỳ tệp hoặc thư mục nào có quyền được đặt thành 777!

+2

Làm cách nào để thay đổi các quyền đó? –

+1

Thay đổi tất cả các tập tin cho phép để 755 và cũng là thư mục chính để 755 Giải quyết vấn đề cho tôi – Oussaki

+0

Đã lưu tôi! Cảm ơn. – Scooter

Các vấn đề liên quan