Làm cách nào để bật chế độ gỡ lỗi PHP?
Show
Không ai thích quá trình gỡ lỗi mã của họ. Tuy nhiên, nếu bạn muốn xây dựng các ứng dụng web tuyệt vời, điều quan trọng là bạn phải hiểu kỹ quy trình Bài viết này chia nhỏ các nguyên tắc cơ bản về gỡ lỗi trong PHP, giúp bạn hiểu các thông báo lỗi của PHP và giới thiệu cho bạn một số công cụ hữu ích để giúp quá trình này bớt khó khăn hơn một chút Làm công việc mặt đất của bạnĐiều quan trọng là bạn phải định cấu hình PHP chính xác và viết mã của mình theo cách sao cho nó tạo ra các lỗi có ý nghĩa vào đúng thời điểm. Ví dụ: cách tốt nhất là bật báo cáo lỗi ở mức chi tiết trên nền tảng phát triển của bạn. Tuy nhiên, đây có lẽ không phải là một ý tưởng tuyệt vời trên (các) máy chủ sản xuất của bạn. Trong môi trường trực tiếp, bạn không muốn gây nhầm lẫn cho người dùng chân chính hoặc cung cấp cho người dùng ác ý quá nhiều thông tin về hoạt động bên trong trang web của bạn Vì vậy, với suy nghĩ đó, hãy nói về vấn đề quá phổ biến “Tôi không nhận được thông báo lỗi”. Điều này thường xảy ra do lỗi cú pháp trên nền tảng mà nhà phát triển đã không thực hiện đúng công việc cơ bản của họ. Trước tiên, bạn nên bật display_errors. Điều này có thể được thực hiện trong php của bạn. ini hoặc ở đầu mã của bạn như thế này
Mẹo. Trong các ví dụ mã này, tôi bỏ qua thẻ PHP đóng (?>). Nó thường được coi là một thực hành tốt để làm như vậy trong các tệp chỉ chứa mã PHP để tránh vô tình chèn khoảng trắng và tất cả các lỗi quá phổ biến "tiêu đề đã được gửi" Tiếp theo, bạn sẽ cần đặt mức báo cáo lỗi. Theo mặc định, PHP 4 và 5 không hiển thị các thông báo PHP có thể quan trọng trong việc gỡ lỗi mã của bạn (sớm nói thêm về điều đó). Các thông báo được tạo bởi PHP cho dù chúng có được hiển thị hay không, vì vậy việc triển khai mã với 20 thông báo được tạo sẽ ảnh hưởng đến chi phí hoạt động của trang web của bạn. Vì vậy, để đảm bảo các thông báo được hiển thị, hãy đặt mức báo cáo lỗi trong tệp php của bạn. ini hoặc sửa mã thời gian chạy của bạn thành như thế này
Mẹo. E_ALL là một hằng số nên đừng nhầm lẫn khi đặt nó trong dấu ngoặc kép Với PHP 5, bạn cũng nên bật mức báo cáo lỗi E_STRICT. E_STRICT hữu ích để đảm bảo bạn đang mã hóa bằng các tiêu chuẩn tốt nhất có thể. Ví dụ: E_STRICT trợ giúp bằng cách cảnh báo bạn rằng bạn đang sử dụng một chức năng không dùng nữa. Đây là cách kích hoạt nó trong thời gian chạy ________số 8_______ Điều đáng nói là trên nền tảng phát triển của bạn, bạn thường nên thực hiện những thay đổi này trong tệp php của mình. ini thay vì trong thời gian chạy. Điều này là do nếu bạn gặp lỗi cú pháp với các tùy chọn này được đặt trong mã của bạn chứ không phải trong tệp php. ini, tùy thuộc vào thiết lập của bạn, bạn có thể thấy một trang trống. Tương tự như vậy, điều đáng chú ý là nếu bạn đang đặt các giá trị này trong mã của mình, thì một câu lệnh có điều kiện có thể là một ý tưởng hay để tránh các cài đặt này vô tình được triển khai vào môi trường trực tiếp Tôi đang xem loại lỗi nào?Như với hầu hết các ngôn ngữ, các lỗi của PHP có vẻ hơi bí truyền, nhưng thực tế chỉ có 4 loại lỗi chính mà bạn cần nhớ 1. Lỗi cú phápLỗi cú pháp hoặc lỗi phân tích cú pháp thường do lỗi đánh máy trong mã của bạn. Ví dụ: thiếu dấu chấm phẩy, dấu ngoặc kép, dấu ngoặc nhọn hoặc dấu ngoặc đơn. Khi bạn gặp lỗi cú pháp, bạn sẽ nhận được lỗi tương tự như thế này
Trong trường hợp này, điều quan trọng là bạn phải kiểm tra dòng phía trên dòng được trích dẫn trong lỗi (trong trường hợp này là dòng 5) bởi vì mặc dù PHP đã gặp phải điều gì đó không mong muốn ở dòng 6, thông thường đó là lỗi đánh máy ở dòng trên gây ra lỗi. . Đây là một ví dụ
$sSiteName = “Blog nhà trên cây” Trong ví dụ này mình đã bỏ dấu chấm phẩy ở dòng 5, tuy nhiên PHP lại báo lỗi ở dòng 6. Nhìn vào một dòng ở trên, bạn có thể phát hiện và khắc phục sự cố Mẹo. Trong ví dụ này, tôi đang sử dụng Ký hiệu Hungary. Việc áp dụng tiêu chuẩn mã hóa này có thể hỗ trợ gỡ lỗi mã trong khi làm việc cộng tác hoặc trên một đoạn mã bạn đã viết cách đây một thời gian. Chữ cái đứng đầu biểu thị kiểu biến tức là việc xác định kiểu biến rất nhanh chóng và đơn giản. Điều này có thể hỗ trợ phát hiện những điểm bất thường cũng có thể giúp làm nổi bật bất kỳ lỗi logic tiềm ẩn nào. 2. cảnh báoCảnh báo không phải là công cụ giải quyết như lỗi cú pháp. PHP có thể đối phó với một cảnh báo, tuy nhiên, nó biết rằng có thể bạn đã mắc lỗi ở đâu đó và đang thông báo cho bạn về điều đó. Cảnh báo thường xuất hiện vì những lý do sau
3. thông báoCác thông báo sẽ không làm dừng quá trình thực thi mã của bạn, nhưng chúng có thể rất quan trọng trong việc theo dõi một lỗi khó chịu. Thường thì bạn sẽ thấy rằng mã đang hoạt động hoàn hảo trong môi trường sản xuất bắt đầu đưa ra các thông báo khi bạn đặt error_reporting thành E_ALL Một thông báo phổ biến mà bạn sẽ gặp phải trong quá trình phát triển là
Thông tin này có thể cực kỳ hữu ích trong việc gỡ lỗi ứng dụng của bạn. Giả sử bạn đã thực hiện một truy vấn cơ sở dữ liệu đơn giản và lấy một hàng dữ liệu người dùng từ một bảng. Để trình bày trong dạng xem của bạn, bạn đã chỉ định các chi tiết cho một mảng có tên là $aUserDetails. Tuy nhiên, khi bạn lặp lại $a User Details[‘First Name’] trên dòng 55 thì không có đầu ra và PHP đưa ra thông báo ở trên. Trong trường hợp này, thông báo bạn nhận được thực sự có thể hữu ích PHP đã thông báo cho chúng tôi một cách hữu ích rằng khóa FirstName không được xác định nên chúng tôi biết rằng đây không phải là trường hợp bản ghi cơ sở dữ liệu là NULL. Tuy nhiên, có lẽ chúng ta nên kiểm tra câu lệnh SQL của mình để đảm bảo rằng chúng ta đã thực sự truy xuất tên của người dùng từ cơ sở dữ liệu. Trong trường hợp này, thông báo đã giúp chúng tôi loại trừ một vấn đề tiềm ẩn, từ đó hướng chúng tôi đến nguồn có khả năng gây ra vấn đề của chúng tôi. Nếu không có thông báo, điểm dừng đầu tiên có khả năng của chúng tôi sẽ là bản ghi cơ sở dữ liệu, tiếp theo là truy ngược lại logic của chúng tôi để cuối cùng tìm thấy thiếu sót của chúng tôi trong SQL 4. Lỗi nghiêm trọngLỗi nghiêm trọng nghe có vẻ đau đớn nhất trong bốn lỗi nhưng trên thực tế thường dễ giải quyết nhất. Tóm lại, điều đó có nghĩa là PHP hiểu những gì bạn đã yêu cầu nhưng không thể thực hiện yêu cầu. Cú pháp của bạn đúng, bạn đang nói ngôn ngữ của nó nhưng PHP không có những gì nó cần để tuân thủ. Lỗi nghiêm trọng phổ biến nhất là một lớp hoặc chức năng không xác định và lỗi được tạo ra thường dẫn thẳng đến gốc rễ của vấn đề
Sử dụng var_dump() để hỗ trợ gỡ lỗi của bạnvar_dump() là một hàm PHP gốc hiển thị thông tin có cấu trúc, có thể đọc được bằng con người, về một (hoặc nhiều) biểu thức. Điều này đặc biệt hữu ích khi xử lý các mảng và đối tượng vì var_dump() hiển thị cấu trúc của chúng theo cách đệ quy mang lại cho bạn bức tranh tốt nhất có thể về những gì đang diễn ra. Đây là một ví dụ về cách sử dụng var_dump() trong ngữ cảnh Dưới đây, tôi đã tạo một mảng điểm số mà người dùng đạt được nhưng một giá trị trong mảng của tôi khác biệt một cách tinh tế so với các điểm khác, var_dump() có thể giúp chúng tôi khám phá sự khác biệt đó
Tip: Wrap var_dump() in tags to aid readability.
Xdebug có cấu hình cao và thích ứng với nhiều tình huống. Ví dụ: dấu vết ngăn xếp (cực kỳ hữu ích để theo dõi ứng dụng của bạn đang làm gì và khi nào) có thể được định cấu hình thành bốn cấp độ chi tiết khác nhau. Điều này có nghĩa là bạn có thể điều chỉnh độ nhạy của đầu ra của Xdebug giúp bạn có được thông tin chi tiết về hoạt động của ứng dụng của bạn Dấu vết ngăn xếp hiển thị cho bạn vị trí xảy ra lỗi, cho phép bạn theo dõi lệnh gọi hàm và nêu chi tiết số dòng gốc của các sự kiện này. Tất cả đều là thông tin tuyệt vời để gỡ lỗi mã của bạn Mẹo. Theo mặc định, Xdebug giới hạn đầu ra var_dump() ở ba mức đệ quy. Bạn có thể muốn thay đổi điều này trong xdebug của mình. ini bằng cách đặt xdebug. var_display_max_depth bằng một số phù hợp với nhu cầu của bạn Hãy xem hướng dẫn cài đặt của Xdebug để bắt đầu chữa cháyPHPĐối với tất cả những người hâm mộ FireBug ngoài kia, FirePHP là một thư viện PHP nhỏ thực sự hữu ích và tiện ích bổ sung Firefox thực sự có thể giúp ích cho việc phát triển AJAX Về cơ bản, FirePHP cho phép bạn ghi thông tin gỡ lỗi vào bảng điều khiển Firebug bằng một lệnh gọi phương thức đơn giản như vậy 0Ví dụ: trong trường hợp tôi đang thực hiện một yêu cầu tìm kiếm AJAX, có thể hữu ích khi trả lại chuỗi SQL mà mã của tôi đang xây dựng để tôi có thể đảm bảo mã của mình hoạt động chính xác. Tất cả dữ liệu được ghi vào bảng điều khiển Firebug được gửi qua các tiêu đề phản hồi và do đó không ảnh hưởng đến trang được trình duyệt hiển thị Cảnh báo. Như với tất cả thông tin gỡ lỗi, loại dữ liệu này không được dùng chung. Nhược điểm của việc phải thêm các lệnh gọi phương thức FirePHP vào PHP của bạn là trước khi đưa vào hoạt động, bạn sẽ phải loại bỏ tất cả các lệnh gọi này hoặc thiết lập một câu lệnh điều kiện dựa trên môi trường để xác định xem có bao gồm mã gỡ lỗi hay không Bạn có thể cài đặt tiện ích Firefox tại trang web của FirePHP và cũng có thể lấy các lib PHP ở đó. Ồ, và đừng quên nếu bạn chưa cài đặt FireBug, bạn cũng sẽ cần điều đó Tóm lại là…Hy vọng rằng trong suốt quá trình của bài viết này, bạn đã học được cách làm nền tảng của mình bằng cách chuẩn bị PHP cho quá trình gỡ lỗi; . Tương tự như vậy, tôi hy vọng rằng bạn sẽ thấy Xdebug và FirePHP hữu ích và chúng sẽ giúp cuộc sống của bạn dễ dàng hơn trong chu kỳ phát triển của bạn Như tôi đã đề cập và tôi thực sự không thể nói đủ điều này, hãy luôn nhớ xóa hoặc chặn đầu ra gỡ lỗi của bạn khi bạn đưa trang web của mình vào sản xuất, xét cho cùng, không có gì tệ hơn việc tất cả người dùng của bạn có thể đọc được thông tin về bạn Có một mẹo gỡ lỗi tuyệt vời để chia sẻ? Bài viết này được viết bởi Kieran Masterton BẮT ĐẦU NGAY BÂY GIỜ Học với Treehouse chỉ 30 phút mỗi ngày có thể dạy cho bạn những kỹ năng cần thiết để đạt được công việc mà bạn hằng mơ ước
20 phản hồi cho “Cách gỡ lỗi trong PHP”
|