tìm kiếm thông tin

Điểm tin

lịch ngày tháng

Hệ thống máy tính
Đồ họa máy tính
Mạng máy tính
Tạo trang web
Các phần mềm khác

Thông báo tuyển sinh

Đào tạo các chương trình Tin học
từ phổ cập đến nâng cao
h Tin học cơ bản.
Tin học văn phòng
Quản tri mạng máy tính.
Xây dựng mạng máy tính.
Đồ họa máy tính.
Xây dựng Website.
Lắp đặt, bảo trì, hệ thống.
Lập trình Pascal, lập trình cơ sở
dữ liệu Access, SQL.


Thông tin truy cập

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • Chữ tâm

    Hướng tới tương lai

    ">
    Gốc > Các thông tin khác > Lập trình cơ sở >

    Kinh nghiệm sửa lỗi PHP

    Để sửa lỗi thì phải biết lỗi như thế nào. Vì thế việc đầu tiên bạn cần làm là bật tính năng thông báo lỗi của PHP lên.
    1. Sửa php.ini file. Set display_errors thành On. Restart webserver.
    - Nếu như bạn đang dùng share host , ko thể tự edit php.ini được thì bạn có thể dùng hàm ini_set để bật tính năng này lúc run-time ( chỉ có tác dụng với script đang chạy)
    Code:
    ini_set("error_reporting", E_ALL); 
    

    2. Ở đầu script , thêm vào :
    Code:
     error_reporting(E_ALL); 
    

    Nếu ko set như thế thì mặc định nó sẽ có giá trị là E_ALL & ~E_NOTICE & ~E_STRICT , và như thế nó sẽ báo trình thông dịch PHP hiện tất cả lỗi ngoại trừ Notices và Strict Notices.
    Danh sách các giá trị bạn có thể truyền cho error_reporting là :
    Value - Constant
    1 -E_ERROR
    2 -E_WARNING
    4 -E_PARSE
    8 -E_NOTICE
    16 -E_CORE_ERROR
    32 -E_CORE_WARNING
    64 -E_COMPILE_ERROR
    128 -E_COMPILE_WARNING
    256 -E_USER_ERROR
    512 -E_USER_WARNING
    1024 -E_USER_NOTICE
    6143 -E_ALL
    2048 -E_STRICT
    4096 -E_RECOVERABLE_ERROR

    Bạn có thể dùng giá trị trực tiếp hoặc constant đều được( nên dùng constant cho dễ hiểu)
    Bạn có thể xem thêm về hàm này tại đây : http://vn.php.net/error_reporting
    Lưu ý :
    - Khi website đã hoạt động ổn định thì nên tắt tính năng này đi bằng cách set error_reporting thành 0 :
    Code:
    error_reporting(0); 
    


    Đó chính là bước chuẩn bị cần thiết để "bắt lỗi" với PHP.

    Khởi đầu với những lỗi cơ bản - Parse Errors

    Parse Error là những lỗi về cú pháp (syntax error) . Lỗi này sẽ xuất hiện khi bạn viết code không theo đúng khuôn dạng php qui định như : thiếu dấu ( , dấu nháy " , sai chính tả từ khóa, sai tên hàm ... Đây là lỗi thuộc dạng thường gặp và dễ sửa . Khi gặp lỗi này PHP sẽ xuất ra những thông báo cho bạn biết xuất hiện lỗi ở dòng nào và lý do lỗi ( khá chung chung)
    Bạn xem đoạn code sau :
    Code:


    print "Hello World;

    ?>


    Nhìn vào sẽ thấy ngay đoạn code này thiếu dấu nháy cuối chuỗi ở print "Hello World;
    Và khi chạy PHP sẽ tặng bạn 1 thông báo thế này :
    Code:
    Parse error: syntax error, unexpected $end in D:\xampp\htdocs\broken.php on line 5
    
    Và nếu chưa quen bạn sẽ rất ngạc nhiên vì ko biết dòng số 5 có lỗi gì
    Code:
    ?>
    Điều này bởi vì PHP sẽ xem dấu nháy trước chữ Hello là đánh dấu bắt đầu 1 chuỗi, nó sẽ dò theo cho đến kí tự nháy tiếp theo để kết thúc 1 chuỗi. Trong trường hợp này nó dò đến tận cùng code vẫn ko gặp, đành phải ... hét lên có lỗi ở đấy .
    Và khi PHP báo lỗi ở dòng :
    Code:
    ?>
    Bạn nên tìm ngược lên , dò từng dòng xem có chuỗi nào ko được bao trong cặp nháy hay không .
    Đây là những cặp dấu bao thông dụng , rất thường bị lỗi unexpected $end .
    Quote
    [ ]
    { }
    " "
    ' '


    Bạn xem đoạn code sau:
    Code:
    $yourName = "Jordan";

    if
    $yourName == "Jordan")
    {
    echo
    "Hello $yourName";
    }
    ?>

    Nhìn vào ta sẽ thấy lệnh if có lỗi thiếu ( . Và đúng như thế PHP sẽ báo lỗi thế này
    Code:
    Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in D:\xampp\htdocts\broken.php on line 4
    
    Lần này PHP báo chính xác dòng có lỗi .

    Một lỗi cũng hay gặp là thiếu dấu ; ở cuối câu lệnh . Với lỗi này thì PHP sẽ báo lỗi ở dòng phía sau dòng có lỗi . Vì thế nên kiểm tra trước sau trên dưới cẩn thận.

    Sử dụng var_dump()
    Hàm này rất hữu dụng khi ta cần sửa các logic error . Khi cần biết 1 biến đang chứa những gì bên trong và kiểu dữ liệu của nó ta cứ var_dump in nó ra xem xét
    VD :
    Code:
    $a = array(1, 2, array("a", "b", "c"));
    var_dump($a);
    ?>


    Sẽ cho ra :
    Code:
    array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
    }
    }
    PHP Việt Nam
    

    Nhắn tin cho tác giả
    Nguyễn Đình Thắng @ 09:33 23/02/2010
    Số lượt xem: 765
    Số lượt thích: 0 người
     
    Gửi ý kiến