HƯỚNG DẪN Tìm hiểu về lỗi 500 Internal Server Error và cách khắc phục

Thảo luận trong 'KIẾN THỨC CƠ BẢN' bắt đầu bởi quyet1990, 31/10/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Lỗi 500 Internal Server Error có thể được gây ra bởi nhiều thứ, bao gồm như quyền truy cập không hợp lệ, quyền sở hữu không hợp lệ, những dòng mã lỗi trong php.ini hoặc tập tin .htaccess của bạn, yêu cầu không hợp lệ trong script, và một số nguyên nhân khác.

    Ví dụ về lỗi 500
    [​IMG]


    Với mỗi nguyên nhân gây ra lỗi 500 Server Internal Error chúng ta sẽ có những cách khắc phục khác nhau. Phần lớn lổi 500 xảy ra do file .htaccess gây nên. Do vậy đầu tiên bạn cần xem xét file này.

    1. Lỗi do cấu hình tập tin .htaccess sai
    Trong tập tin .htaccess, bạn có thể đã thêm những dòng mã sai hoặc những dòng mã gây xung đột trong hệ thống. Cách tốt nhất để khắc phục sự cố này là comment những dòng bạn nghi là sai trong tập tin .htaccess.
    Bạn có thể comment một dòng trong .htaccess bằng cách thêm # để bắt đầu. Trước khi thực hiện hãy tiến hành sao lưu tập tin .htaccess để dự phòng khi có vấn đề xảy ra.

    Ví dụ, nếu .htaccess trông như thế này:
    DirectoryIndex default.html
    AddType application / x-httpd-php php5

    Sau đó bạn thử comment như thế này:
    DirectoryIndex default.html
    #AddType application/x-httpd-php php5

    Nếu bạn không thể xác định dòng lệnh nào có vấn đề, thì hãy comment lần lượt từng dòng sau đó tiến hành chạy thử.

    Một số lỗi .htaccess phổ biến khác:
    FollowSymlinks

    Ta có ví dụ về một lỗi FollowSymlinks như thế này:
    Mã:
    [Sun Jun 05 12:07:10 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: Option FollowSymlinks not allowed here
    
    Trong ví dụ trên, ta thấy lỗi này rất đơn giản để sửa chữa; trong tập tin .htaccess, sử dụng một chỉ thị cho phép - trong trường hợp này sử dụng "SymlinksIfOwnerMatches" thay vì "FollowSymlinks", hoặc loại bỏ dòng FollowSymlinks hoàn toàn.

    Syntax Not Closed (Cú pháp không đóng)
    Ví dụ:
    Mã:
    [Sun Jun 05 12:11:38 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: /home1/examplec/public_html/.htaccess:3: [B]<IfModule>RewriteEngine On/Module>[/B] was not closed.
    
    Một lần nữa, giải pháp là chỉ cần sửa cú pháp, hoặc loại bỏ nó. Trong trường hợp này, ta chỉ cần sửa /Module> thành "</ IfModule>";

    2. Thiết lập phân quyền sai
    Ví dụ:
    Mã:
    [Sun Jun 05 12:03:22 2012] [error] [client 66.249.72.82] SoftException in Application.cpp:601: Directory "/home/exampleuser/public_html" is writeable by group
    
    Lỗi này thường gặp ở 1 số sever không cho phép thiết lập quyền hạn đối với các thư mục sang chế độ CHMOD 777, đặc biệt là các thư mục admin hay administrator (nhằm mục đích bảo vệ phần back-end của bạn). Nghĩa là lỗi này ít khi xảy ra trên localhost, và khi gặp lỗi này bạn cũng sẽ không vào được trang quản trị.

    Giải quyết: bạn vào File Mananger hay dùng một chương trình FTP kết nối với host của bạn và CHMOD lại cho các thư mục và tập tin, thư mục thì là 755 còn tập tin thì nên 644, hoặc thử đổi tên/xóa file .htaccess có trong host, sau đó thử truy cập lại.

    3. Tập tin php.ini cấu hình không đúng
    ForceType:
    Ví dụ:
    Khi bạn có một tập tin gọi là “item" và muốn nó được phân tích bởi máy chủ thành file item.php, bạn sử dụng đoạn mã sau trong tập tin .htaccess (câu lệnh này chỉ phù hợp với máy chủ không sử dụng phpsuexec):
    Mã:
    ForceType application/x-httpd-php
    Tuy nhiên, vì các máy chủ của chúng tôi sử dụng PHPSuexec điều này sẽ dẫn đến lỗi 500. Để giải quyết điều này bạn có thể sử dụng SetHandler thay cho ForceType, vì vậy .htaccess file của bạn trở thành:
    Mã:
    SetHandler application/x-httpd-php

    php_value:

    Trên một máy chủ mà không cần PHPSuexec nó có thể sử dụng câu lệnh php_value trong một tập tin .htaccess để thay đổi các thiết lập của php (thực sự ghi đè lên các thiết lập từ php.ini).

    Trên một sever với PHPSuexec, điều này sẽ dẫn đến lỗi 500. Để giải quyết điều này, bạn có thể sử dụng một tập tin php.ini để trong cùng thư mục nơi bạn để tập tin .htaccess.

    Bằng ví dụ nếu bạn muốn thiết lập các short_open_tag sang trạng thái off, bạn có thể sử dụng short_open_tag? = off trong tập tin .htaccess. Sử dụng một tập tin php.ini thì ta được kết quả sau:
    Mã:
    [PHP]
    short_open_tag = Off
    
     

Chia sẻ trang này

Đang tải...