XtGem Forum catalog
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Wapmaster » All shared script » Bật thông báo lỗi trong PHP
Xuống dưới » Bật thông báo lỗi trong PHP
avatar by Pham_loi Pham_loi
Chức vụ:
21:07:07, 22-08-2015

Khi đã code, không ai là chưa từng gặp lỗi. Và bài này chỉ nhắm đến các bạn mới bước vào thế giới PHP, chưa có kinh nghiệm sửa lỗi sẽ có một số kỹ năng tối thiểu để có thể tự mình sửa lỗi mà không cần phải nhờ mọi người.
I . Việc làm đầu tiên:
Để 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.
2. Dùng Hàm ini_set để bật tính năng này lúc run-time
- 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)
ini_set("error_reporting", E_ALL);
Copy code

Ở đầu script , thêm vào :
error_reporting(E_ALL);
Copy code

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)
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 :
error_reporting(0);
Copy code

Đó 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 Errorlà 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 :
<?php print "Hello World; ?>
Copy code

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 :
Parse error: syntax error, unexpected $end in D:\xampp\htdocs\broken.php on line 5
Copy code
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 .
Bạn xem đoạn code sau:
<?php
$yourName 
"Jordan";
if 
$yourName == "Jordan")
{ echo 
"Hello $yourName"; }
?>

Copy code

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
Copy code
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 :
<?php
$a 
= array(12, array("a""b""c"));
var_dump($a);
?>

Copy code

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" } }

Like: 0
Lên trên  Tổng số: 1







Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014