Tại sao php không hiển thị lỗi?

Một ứng dụng PHP tạo ra một số cấp độ lỗi và cảnh báo trong thời gian chạy tập lệnh. PHP cung cấp bốn cách khác nhau để hiển thị các lỗi và cảnh báo này, được liệt kê bên dưới

  1. báo cáo lỗi. Nó hiển thị tất cả các lỗi cấp độ ngoại trừ các lỗi cấp độ E-NOTICE, E-STRICT và E_DEPRECATED
  2. display_errors. Theo mặc định, giá trị của display_errors bị tắt. Đặt nó thành bật để hiển thị tất cả các lỗi, bao gồm lỗi phân tích cú pháp [cú pháp]
  3. log_errors. Giá trị mặc định của log_errors là ON, cho biết việc ghi lỗi có được thực hiện hay không
  4. chuỗi error_log. Chuỗi error_log đặt tên tệp mà lỗi tập lệnh sẽ được ghi lại

Có một vài dòng mã được cung cấp bên dưới, hãy thêm mã này vào tệp PHP của bạn để hiển thị lỗi. Đó là cách nhanh nhất để hiển thị tất cả các lỗi và cảnh báo PHP

Hoạt động của chức năng và chỉ thị trên như sau

ini_set[]

Chức năng này cố gắng ghi đè lên cấu hình được tìm thấy trong php. tập tin ini

display_errors

display_errors là một lệnh xác định xem lỗi sẽ hiển thị cho người dùng hay vẫn ẩn. Nó không xử lý các lỗi xảy ra trong trình tự khởi động của PHP

display_startup_errors

display_startup_errors cũng là một lệnh, được sử dụng để tìm lỗi trong chuỗi khởi động của PHP

báo cáo lỗi[]

error_reporting là một chức năng gốc của PHP. Nó được sử dụng để hiển thị lỗi

Chương trình

đầu ra

Đầu ra sẽ được hiển thị một cảnh báo cho trình duyệt

Warning: include[jtp.php]: failed to open stream: No such file or directory in C:\xampp\htdocs\program\phperror.php on line 6

Warning: include[]: Failed opening 'jtp.php' for inclusion [include_path='C:\xampp\php\PEAR'] in C:\xampp\htdocs\program\phperror.php on line 6

Ghi chú. Cả hai lệnh này display_errors và display_startup_errors sẽ không thể hiển thị lỗi phân tích cú pháp. Do đó, PHP. cấu hình ini phải được sửa đổi

Định cấu hình PHP. ini để hiển thị tất cả các lỗi và cảnh báo

Những thay đổi sau đây phải được thực hiện trong php. ini để hiển thị tất cả các lỗi, bao gồm lỗi phân tích cú pháp và khởi động lại máy chủ apache trong xampp

Đặt lệnh display_errors thành "bật" trong PHP. tập tin ini. Nó sẽ hiển thị tất cả các lỗi, không thể hiển thị bằng cách chỉ gọi hàm ini_set[], chẳng hạn như - lỗi cú pháp và lỗi phân tích cú pháp

Chương trình

Chương trình PHP khi display_errors bị tắt hoặc tắt trong php. tập tin ini

đầu ra

Đầu ra sẽ được hiển thị cho trình duyệt như ảnh chụp màn hình bên dưới khi lệnh display_errors bị tắt

đầu ra

Đầu ra cho chương trình trên khi display_errors được bật hoặc bật trong php. ini và máy chủ được khởi động lại

Cấp báo cáo lỗi

Như chúng ta đã thảo luận rằng PHP tạo ra các mức lỗi khác nhau. Vì vậy, hãy tìm hiểu loại lỗi nào được tạo ra trong mã PHP

Có hai phương pháp để xem các lỗi PHP xảy ra khi chạy trang web của bạn. Bạn có thể hiển thị lỗi trực tiếp trên trang web của mình [có thể xem được từ bất kỳ trình duyệt web nào] hoặc bật ghi nhật ký lỗi để ghi lỗi vào một tệp được chỉ định [có thể xem được bên trong tệp văn bản]. Bài viết này sẽ đề cập đến cách bật và tắt display_errors, điều chỉnh cài đặt báo cáo lỗi, định cấu hình ghi nhật ký lỗi và sử dụng hàm ini_set[] để giúp khắc phục lỗi PHP với trang web của bạn

  • chỉnh sửa php. ini để hiển thị lỗi
  • php. ini Cài đặt Báo cáo Lỗi
  • Bật Lỗi đăng nhập
  • Sử dụng int_set[] để hiển thị lỗi
  • Duy trì tệp nhật ký của bạn

CẢNH BÁO. Các hướng dẫn này được viết cho cấu hình EasyApache 3 PHP/Apache. Cấu hình cũ hơn này xử lý hiệu quả các sửa đổi trực tiếp đối với php. tập tin ini. Tuy nhiên, nếu bạn đang chạy EasyApache 4, thì cPanel/WHM được thiết kế để duy trì tệp php. tập tin ini. Mọi thay đổi được thực hiện trực tiếp với php. ini [trong khi sử dụng EA3] có thể khiến chức năng này không hoạt động như mong đợi. Đảm bảo kiểm tra phiên bản EasyApache bạn đang chạy, trước khi thực hiện các sửa đổi như đã nêu trong bài viết này

chỉnh sửa php. ini để hiển thị lỗi

Trong khi trang web của bạn đang hoạt động, php. ini nên bị tắt display_errors vì lý do bảo mật. Tuy nhiên, đối với môi trường phát triển, có thể bật display_errors để khắc phục sự cố. Nên tắt hiển thị lỗi khi trang web đang hoạt động, để bảo vệ thông tin nhạy cảm và không can thiệp vào định dạng trang web của bạn. Khi display_errors được Bật, các trang trên trang web của bạn sẽ hiển thị bất kỳ lỗi PHP nào gặp phải khi tải trang web của bạn trong trình duyệt. Phần này sẽ giải thích cách kiểm soát báo cáo lỗi và Bật và Tắt display_errors

  1. Đăng nhập vào cPanel của bạn
  2. Chuyển đến Trình quản lý tệp. Chọn thư mục chính cho trang web của bạn [theo mặc định. public_html] và nhấp vào Bắt đầu
  3. Tìm phần “Xử lý lỗi và ghi nhật ký ” trong php. ban đầu. Để hiển thị hoặc ghi nhật ký lỗi, bạn cần bật error_reporting bằng cách xóa [ ; ] ở đầu dòng. Bạn có thể tắt error_reporting bằng cách thêm dấu [ ; ] vào trước dòng. Tham khảo mã dưới đây. Đã tắt báo cáo lỗi. ______1

    Báo cáo lỗi được bật để báo cáo cụ thể tất cả các lỗi, nhưng không thông báo

    ;   - Show all errors, except for notices ; error_reporting = E_ALL & ~E_NOTICE ;  

  4. Tiếp theo, bạn có thể đặt biến display_errors thành Bật hoặc Tắt để hiển thị lỗi trên trang web của mình hoặc không. Hãy tìm dòng display_errors trong php. ini và đặt thành Bật để hiển thị lỗi hoặc Tắt để không hiển thị lỗi. Mã trông giống như sau. Lỗi hiển thị

    display_errors = On 

    Không hiển thị lỗi

    display_errors = Off 


php. ini Cài đặt Báo cáo Lỗi

PHP có một danh sách các cài đặt báo cáo lỗi khác nhau trong php. ini chính nó. Ví dụ: nếu bạn chỉ muốn hiển thị các cảnh báo, bạn có thể thay đổi dòng error_reporting thành như sau

error_reporting = E_WARNING

Bảng sau được tạo từ các cài đặt được tìm thấy trong một tệp php tiêu chuẩn. tập tin ini. Tham khảo bảng sau để biết các tùy chọn khả dụng

Danh sách các tùy chọn có sẵn được lấy từ php. iniDescriptionE_ALLTất cả lỗi và cảnh báoE_ERRORLỗi thời gian chạy nghiêm trọngE_WARNINGcảnh báo thời gian chạy [lỗi không nghiêm trọng]E_PARSElỗi phân tích cú pháp thời gian biên dịchE_DEPRECATEDthông báo về việc sử dụng các chức năng sẽ bị gỡ bỏ trong phiên bản tương laiE_NOTICEthông báo thời gian chạy [đây là những cảnh báo thường xuất phát từ một lỗi trong . g. , sử dụng một biến chưa được khởi tạo và dựa vào thực tế là nó được khởi tạo tự động thành một chuỗi trống]E_CORE_ERRORlỗi nghiêm trọng xảy ra trong quá trình khởi động ban đầu của PHPE_CORE_WARNINGcảnh báo [lỗi không nghiêm trọng] xảy ra trong quá trình khởi động ban đầu của PHPE_COMPILE_ERRORlỗi thời gian biên dịch nghiêm trọngE_COMPILE_WARNINGcảnh báo thời gian biên dịch [lỗi không nghiêm trọng

Bật Lỗi đăng nhập

Theo mặc định, các lỗi được ghi vào error_log, được đặt thành/dev/null. Điều này có nghĩa là lỗi ghi nhật ký sẽ không xảy ra. Khi bật lỗi, các lỗi sẽ được lưu trữ trong một tệp trong thư mục xảy ra lỗi trong. Ví dụ: nếu bạn có tệp PHP có tên là chỉ mục. php trong thư mục con như public_html/wordpress, nếu bạn gặp bất kỳ lỗi PHP nào khi chạy tập lệnh của tệp đó, nhật ký lỗi sẽ được lưu trong thư mục đó [public_html/wordpress]. Bạn có thể chỉ định [trong php. ini] tập tin nào để lưu trữ tất cả các lỗi trong

Quan trọng. Bạn phải đặt đoạn mã sau vào. htaccess để tạo php cục bộ. ini hoạt động cho thư mục hiện tại nơi. htaccess cư trú và tất cả các thư mục con trong

 suPHP_ConfigPath /home/USERNAME/public_html 

IfModule khiến Apache chỉ tải lệnh nếu suPHP được sử dụng, vì vậy trang web không bị hỏng nếu chuyển sang trình xử lý PHP khác, chẳng hạn như DSO

Để biết thêm thông tin về suPHP và DSO, vui lòng xem bài viết của chúng tôi về Chọn trình xử lý PHP tốt nhất

  1. Đăng nhập vào cPanel của bạn
  2. Chuyển đến Trình quản lý tệp. Chọn thư mục public_html và nhấp vào Đi
  3. Bạn có thể đặt dòng mã sau thành Bật để ghi nhật ký lỗi hoặc Tắt để tắt lỗi .
    log_errors = On  

  4.   Tiếp theo, bạn có thể lưu lỗi từ bất kỳ trang nào trong tệp của mình vào một vị trí cụ thể bằng cách chỉ định error_log . The example below uses a file named error_log Tệp này sẽ đặt error_log vào thư mục xảy ra lỗi.

    ________số 8

    Thao tác này sẽ ghi tất cả lỗi vào tệp error_log bên trong thư mục public_html, bất kể lỗi gặp phải ở thư mục nào

    ; Log errors to specified file. error_log = /home/userna5/public_html/error_log 

Sử dụng int_set[] để hiển thị lỗi

Trong trường hợp bạn muốn lỗi không hiển thị trên toàn trang và muốn kiểm tra lỗi trên một trang duy nhất, bạn có thể sử dụng hàm ini_set[] để hiển thị lỗi trên một trang cụ thể. Cú pháp cơ bản từ php. net hiển thị hàm và các tham số của nó như sau

;   - Show all errors, except for notices ; ;error_reporting = E_ALL & ~E_NOTICE ; 
0

Điều này có thể được đặt ở đầu trang PHP của bạn, với biến error_reporting trong đó, để cho phép kiểm tra lỗi cho trang cụ thể đó. Dưới đây là các bước để làm điều này

  1. Đăng nhập vào cPanel của bạn
  2. Chuyển đến Trình quản lý tệp. Chọn thư mục public_html và nhấp vào Đi
  3. Điều hướng đến tệp PHP bạn muốn kiểm tra lỗi. Mở tệp trong trình chỉnh sửa mã
  4. Trong tệp, thêm phần sau vào đầu.
    ;   - Show all errors, except for notices ; error_reporting = E_ALL & ~E_NOTICE ;  
    0

    1 = Bật
    0 = Tắt

  5. Lưu trang. Bây giờ trang PHP của bạn sẽ chỉ hiển thị lỗi.

Duy trì tệp nhật ký của bạn

Bây giờ bạn đã kích hoạt ghi nhật ký lỗi, hãy đảm bảo duy trì các tệp nhật ký của bạn. Nếu bạn thường xuyên gặp lỗi, hãy nhớ xóa nhật ký định kỳ. Bạn có thể làm như vậy bằng cách xóa tệp khỏi Trình quản lý tệp hoặc thông qua bất kỳ phương pháp nào khác mà bạn muốn quản lý tệp của mình. Một tệp nhật ký lớn đôi khi có thể gây ra sự cố do có thể lấp đầy dung lượng ổ đĩa của bạn hoặc nếu trên dịch vụ lưu trữ được chia sẻ có dung lượng ổ đĩa không giới hạn, bắt đầu ảnh hưởng đến những khách hàng khác trên máy chủ

Chủ Đề