Làm cách nào để xem nhật ký lỗi PHP?

PHP cung cấp các phương pháp mạnh mẽ để làm việc với nhật ký lỗi PHP, bạn có thể ghi nhật ký thủ công và tự động hóa. Ngoài ra, chúng tôi có một số công cụ của bên thứ ba do cộng đồng nguồn mở xây dựng để xử lý quy trình ghi lỗi PHP

Điều quan trọng nhất là khi nào và làm thế nào để đăng nhập lỗi. Bạn có thể ghi lại các lỗi PHP theo ý muốn của mình khi làm việc ở chế độ nhà phát triển. Tạo tệp nhật ký lỗi PHP hoặc lưu chúng dưới dạng thông báo trên các kênh khác nhau, vì bạn có thể thuận tiện ghi lại lỗi theo yêu cầu của mình

Hướng dẫn này tập trung vào những điều cơ bản về nhật ký trong PHP, cấu hình của chúng và nơi bạn có thể tìm thấy chúng. Ngoài ra, hướng dẫn này nêu chi tiết cách ghi nhật ký giúp bạn thuyết phục hơn khi khắc phục sự cố và giám sát các ứng dụng PHP của mình

Khi làm việc ở chế độ sản xuất, bạn phải tạo một quy trình làm việc trơn tru để kích hoạt ghi nhật ký lỗi PHP để người dùng không gặp phải bất kỳ trục trặc nào trong quá trình thực thi thời gian chạy

Ngừng lãng phí thời gian trên máy chủ

Cloudways xử lý việc quản lý máy chủ cho bạn để bạn có thể tập trung vào việc tạo các ứng dụng tuyệt vời và giữ cho khách hàng của mình hài lòng

Các loại lỗi PHP khác nhau

Lỗi PHP xảy ra khi có điều gì đó không có cơ sở trong mã. Chúng có thể phức tạp như gọi sai biến hoặc đơn giản như thiếu dấu chấm phẩy. Bạn phải hiểu các loại lỗi mà bạn gặp phải để giải quyết chúng một cách hiệu quả. Vì vậy, hãy cùng tìm hiểu thêm về các lỗi PHP phổ biến

Lỗi cảnh báo

Lỗi cảnh báo PHP cảnh báo về một sự cố có thể gây ra lỗi nghiêm trọng hơn về lâu dài. Lỗi cảnh báo không phá vỡ quá trình thực thi mã và thường xảy ra khi sử dụng đường dẫn tệp không tồn tại

Ví dụ: nếu lỗi này xuất hiện, bạn phải kiểm tra tên tệp trong mã hoặc thư mục, vì tập lệnh có thể không tìm thấy nó do lỗi cú pháp
Ví dụ

Không có tệp nào có tên “external_file”, vì vậy đầu ra sẽ hiển thị hộp thông báo lỗi và quá trình thực thi sẽ không bị hỏng

thông báo lỗi

Lỗi thông báo là nhỏ; . Những lỗi này có thể khiến hệ thống nhầm lẫn trong việc phân tích liệu có lỗi thực sự hay đó chỉ là mã tiêu chuẩn. Lỗi thông báo thường xảy ra khi tập lệnh cần truy cập vào một biến không xác định

Lỗi cú pháp

Lỗi cú pháp thường do phân tích cú pháp, sử dụng sai hoặc thiếu ký hiệu. Khi trình biên dịch bắt lỗi, nó sẽ chấm dứt tập lệnh

Lỗi phân tích cú pháp/cú pháp là do

  • dấu ngoặc đơn hoặc dấu ngoặc kép
  • Thiếu hoặc thừa dấu chấm phẩy hoặc dấu ngoặc đơn
  • lỗi chính tả

Đây là một ví dụ về thông báo lỗi phân tích cú pháp

PHP Parse error: syntax error, unexpected ‘5’ (L_NAME), expecting ‘)’ in /home/u802426761/domains/username/public_html/wp-config.php on line 32

Lỗi nghiêm trọng

Một lỗi nghiêm trọng xảy ra khi mã gọi hàm, nhưng bản thân hàm không được mô tả. Không giống như các lỗi PHP khác, lỗi nghiêm trọng làm hỏng quá trình thực thi và đôi khi làm hỏng cả ứng dụng. Có ba loại lỗi nghiêm trọng

  • Lỗi nghiêm trọng khi khởi động xảy ra khi khung không thể chạy mã do lỗi trong quá trình cài đặt
  • Lỗi nghiêm trọng trong thời gian biên dịch xảy ra khi nhà phát triển sử dụng hàm, lớp hoặc biến hoặc dữ liệu không tồn tại
  • Lỗi nghiêm trọng trong thời gian chạy tương tự như lỗi nghiêm trọng trong thời gian biên dịch, nhưng xảy ra trong quá trình thực thi chương trình

Đây là một ví dụ về lỗi nghiêm trọng PHP

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37

Một lý do khác cho lỗi nghiêm trọng là vượt quá thời gian thực hiện

Fatal error: Maximum execution time of 30 seconds exceeded in /home/username/domains/domain.com/public_html/wp-includes/class-phpmailer.php on line 737

Bắt đầu với ghi nhật ký lỗi PHP

PHP là ngôn ngữ lập trình được sử dụng rộng rãi nhất để phát triển các ứng dụng web. Theo những hiểu biết của BuildWith, ngày nay hầu như. các trang web đang sử dụng PHP làm ngôn ngữ phụ trợ của họ, chiếm khoảng 75% tất cả các trang web trên thế giới. Những số liệu thống kê này cho thấy rõ ràng rằng PHP vẫn có thị phần vững chắc trong thế giới lập trình. Khi bạn bắt đầu phát triển một ứng dụng bằng PHP, bạn sử dụng một vài lệnh như

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
2,
PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
3 để gỡ lỗi và đăng nhập vào trình duyệt. Nhưng, đó không phải là cách an toàn nhất khi làm việc ở chế độ sản xuất. Ở chế độ nhà phát triển, bạn có thể làm điều đó, nhưng phải tắt nó khi bắt đầu di chuyển. Do đó, trong chế độ nhà phát triển, bạn có thể dễ dàng ghi lại các lỗi trong PHP bằng hàm
PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
4, hàm này sẽ gửi thông báo lỗi đến các quy trình xử lý lỗi đã xác định. Giả sử bạn đang kết nối cơ sở dữ liệu MySQL với PHP và nếu nó không kết nối được với nó, bạn có thể ghi lỗi trong PHP như thế này

[email protected]");

}

?>

Kích hoạt đăng nhập lỗi trong php. ban đầu

Để ghi lỗi trong PHP, hãy mở tệp php. ini và bỏ ghi chú/thêm các dòng mã sau

error_reporting = E_ALL & ~E_NOTICE

error_reporting = E_ALL & ~E_NOTICE | E_STRICT

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR

error_reporting = E_ALL & ~E_NOTICE

Nếu bạn muốn bật ghi lỗi PHP trong các tệp riêng lẻ, hãy thêm mã này vào đầu tệp PHP

________số 8_______

Bây giờ, bạn chỉ phải kích hoạt một câu lệnh để phân tích các lỗi nhật ký trong tệp php. tập tin ini

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
5

Giờ đây, bạn có thể dễ dàng xem các lỗi đã ghi trong trình duyệt của mình. Một số lệnh bổ sung mà bạn có thể viết để ghi nhật ký lỗi PHP bao gồm

// Turn off all error reporting

error_reporting(0);



// Report simple running errors

error_reporting(E_ERROR | E_WARNING | E_PARSE);



// Reporting E_NOTICE can be good too (to report uninitialized variables or catch variable name misspellings ...)

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);



// Report all errors except E_NOTICE

error_reporting(E_ALL & ~E_NOTICE);



// Report all PHP errors (see changelog)

error_reporting(E_ALL);



// Report all PHP errors

error_reporting(-1);



// Same as error_reporting(E_ALL);

ini_set('error_reporting', E_ALL);

Làm cách nào để xem lỗi ghi nhật ký PHP?

Bạn chỉ có thể kiểm tra nhật ký lỗi PHP khi nó được bật; . Vì vậy, trước khi thay đổi mã và cấu hình, hãy kiểm tra thông tin PHP để đảm bảo rằng tính năng ghi nhật ký PHP được bật trên tài khoản lưu trữ của bạn

Phương pháp 1. Sử dụng. tập tin htaccess

Bạn có thể bật nhật ký lỗi PHP bằng cách chỉnh sửa. tập tin htaccess. tìm. htaccess trong thư mục gốc của trang web bằng trình quản lý tệp hoặc ứng dụng khách FTP. Tuy nhiên, hãy vào cài đặt của bảng điều khiển hoặc ứng dụng khách FTP để hiển thị các tệp ẩn nếu tệp bị ẩn

Khi bạn đã tìm thấy. htaccess, hãy làm theo các bước bên dưới

  • Mở. htaccess và chèn đoạn mã sau
    bật php_flag log_errors
    php_value error_reporting 32767
    php_value error_log “error_log. txt
  • Tạo một tệp có tiêu đề error_log. txt trong thư mục public_html
  • lưu và đóng tập tin
  • Tất cả các bản ghi lỗi PHP sẽ được báo cáo trong error_log. tập tin txt

Bây giờ, tính năng ghi nhật ký lỗi PHP đã được bật, hãy xác minh lại bằng cách sử dụng thông tin PHP và Giá trị cục bộ sẽ được bật. Đừng lo lắng nếu Giá trị chính vẫn tắt, vì giá trị cục bộ sẽ ghi đè lên giá trị đó

Nếu trang web gặp bất kỳ sự cố nào, hãy mở error_log. txt và bạn sẽ thấy nhật ký lỗi PHP

Phương pháp 2. sử dụng php. tập tin ini

Phương pháp thứ ba để bật nhật ký lỗi PHP là chỉnh sửa tệp php. tập tin ini. Nó chứa cấu hình máy chủ web mặc định để chạy các ứng dụng PHP

Bạn có thể tìm thấy php. ini bằng cách truy cập thông tin PHP. Khi bạn mở nó, nhấn CTRL + F cho Windows hoặc Command + F cho MacOS để mở thanh tìm kiếm và tìm phần Tệp cấu hình đã tải

Làm cách nào để xem nhật ký lỗi PHP?

Một phương pháp khác để tìm tệp cấu hình là sử dụng dòng lệnh

Kết nối với máy chủ web bằng cách sử dụng máy khách SSH và thực hiện lệnh sau

php -i | grep php.ini

Nó sẽ in đầu ra như thế này

Làm cách nào để xem nhật ký lỗi PHP?

Điều đó nói rằng, đây là các thư mục phổ biến cho php. ini tùy thuộc vào hệ điều hành

  • CLI – /etc/php/7. 4/cli/php. ban đầu. Lưu ý rằng việc thay đổi cấu hình PHP trong CLI sẽ không ảnh hưởng đến máy chủ web
  • Apache – /etc/php/7. 4/apache2/php. ban đầu
  • Nginx hoặc Apache với PHP-FPM – /etc/php/7. 4/fpm/php. ban đầu

Sao chép nhật ký lỗi PHP vào tệp

Các thực hành được xác định ở trên hoạt động tốt khi làm việc trong môi trường nhà phát triển. Tuy nhiên, khi bạn đưa trang web của mình vào hoạt động và bắt đầu hoạt động ở chế độ sản xuất, bạn phải ẩn các lỗi khỏi màn hình hiển thị trên màn hình và ghi chúng vào một tệp phụ trợ
Bạn có thể lưu chúng tại một vị trí nhật ký lỗi PHP cụ thể có URL đã được mô tả trong tệp php. tập tin ini

PHP lưu trữ các bản ghi lỗi trong /var/log/apache2, nếu nó sử dụng mô-đun apache2. Các máy chủ được chia sẻ có xu hướng lưu trữ các tệp nhật ký lỗi PHP trong thư mục gốc/thư mục con nhật ký của bạn. Nhưng…nếu bạn có quyền truy cập vào php. ini, bạn có thể làm điều này bằng cách

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
6

Nếu bạn đang sử dụng cPanel, tệp nhật ký chính, những gì bạn có thể đang tìm kiếm được lưu trữ (theo mặc định) tại

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
7

Nếu vẫn thất bại, bạn có thể kiểm tra vị trí bản ghi lỗi PHP bằng cách sử dụng

Lỗi đăng nhập PHP Frameworks

Các bước trên tôi đã giải thích là để phát triển PHP cốt lõi. PHP có nhiều Model View Architecture (MVC) và micro-framework có các phương thức của chúng trên các chức năng cốt lõi. Một số khung công tác PHP MVC tốt nhất để xây dựng các ứng dụng web nâng cao bao gồm. Laravel, CodeIgniter và Symfony

Lỗi đăng nhập Laravel

Khi bạn thiết lập một dự án Laravel mới, việc ghi lỗi và xử lý ngoại lệ sẽ được cấu hình sẵn trong đó. Laravel có một lớp riêng biệt App\Exceptions\Handler sẽ xử lý tất cả các vấn đề này. Để ghi nhật ký các lỗi của Laravel, nó sử dụng thư viện Monolog hỗ trợ nhiều trình xử lý nhật ký khác nhau. Laravel định cấu hình một số trình xử lý này cho bạn, cho phép bạn chọn giữa một tệp nhật ký lỗi PHP, các tệp nhật ký xoay vòng và ghi thông tin lỗi vào nhật ký hệ thống

Trong cấu hình/ứng dụng. php, bạn có thể định cấu hình tùy chọn PHP để ghi nhật ký lỗi trên màn hình của người dùng. Giá trị của tùy chọn này có thể được thiết lập trong. env dưới thuộc tính APP_DEBUG là một biến môi trường, do đó thiết lập trong ứng dụng. tập tin php. Khi phát triển cục bộ, giá trị có thể được đặt thành true và sau khi chuyển sang sản xuất, giá trị đó phải được đặt thành false. Mặt khác, mối lo ngại về bảo mật luôn ở đó vì nó sẽ hiển thị lỗi trên màn hình trình duyệt

Bạn, với tư cách là nhà phát triển, có thể lưu thông tin nhật ký Laravel trên một tệp duy nhất, tệp hàng ngày, Syslog và errorlog. Để định cấu hình các tùy chọn này cho ghi nhật ký lỗi Laravel, bạn phải mở ứng dụng. php và chỉnh sửa tùy chọn nhật ký. Ví dụ bạn muốn thiết lập ghi nhật ký lỗi hàng ngày thì bạn làm như sau

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
8

Monolog có thể ghi lại lỗi với các cảnh báo bảo mật khác nhau. Theo mặc định, nó thêm tất cả các lỗi trong bộ nhớ, nhưng bạn có thể xác định chúng là lỗi, trường hợp khẩn cấp, cảnh báo, nghiêm trọng và cảnh báo. Để làm điều đó, hãy thêm thuộc tính ‘log_level‘ trong các tùy chọn như thế này

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
9

Tệp nhật ký có trong bộ lưu trữ/nhật ký. Bạn cũng có thể ghi nhật ký lỗi bằng cách sử dụng mặt tiền nhật ký

 User::findOrFail($id)]);

   }

}



The logger provides eight different logging levels, including:



Log::emergency($message);

Log::alert($message);

Log::critical($message);

Log::error($message);

Log::warning($message);

Log::notice($message);

Log::info($message);

Log::debug($message);

Error Logging In Symfony

Symfony đi kèm với một trình ghi nhật ký mặc định mà bạn có thể đưa vào bộ điều khiển hiển thị các mức cảnh báo khác nhau. Theo mặc định, các mục nhật ký được ghi trong var/log/dev. tệp nhật ký khi bạn đang ở trong var/log/prod. đăng nhập

use Psr\Log\LoggerInterface;



public function index(LoggerInterface $logger)

{

   $logger->info('I just got the logger');

   $logger->error('An error occurred');



   $logger->critical('I left the oven on!', [

       // include extra "context" info in your logs

       'cause' => 'in_hurry',

   ]);



   // ...

}

Vì Symfony là framework mẹ của Laravel nên các mức cảnh báo của framework cũng giống nhau

Symfony cũng sử dụng Monolog để ghi lỗi và định cấu hình trước một số trình xử lý cơ bản trong monolog mặc định. khoai mỡ. Dưới đây là ví dụ sử dụng nhật ký hệ thống để ghi nhật ký trên tệp

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
0

Tự động hóa quy trình ghi lỗi PHP

Bạn có thể thực hiện toàn bộ công việc ghi lỗi theo cách thủ công, nhưng khi bạn đang làm việc trong nhiều nhóm và dự án lớn hơn, bạn phải thiết lập quy trình làm việc tự động có thể ghi lại lỗi trong các dịch vụ của bên thứ ba như Sentry, Slack, Blackfire, v.v.

Những công cụ này có thể giúp bạn hiểu rõ hơn về các lỗi và giải pháp khắc phục chúng. Bạn cũng có thể thiết lập các kênh Slack để gửi thông báo nhanh cho các nhóm về bất kỳ sự cố nào trong thời gian chạy

Bạn có thể xem ví dụ hay này trong Symfony cũng hoạt động tương tự

Giả sử bạn đã thiết lập kênh Slack và webhook như

PHP Fatal error: Call to undefined function get_header() in /var/www/username/public/blog/wp-content/themes/theme/index.php on line 37
1

Các biểu tượng cảm xúc cũng được thiết lập trong ví dụ trên, bạn có thấy điều đó không?

Cách các lỗi PHP được ghi lại trên Cloudways

Khi bạn tạo một tài khoản trên dịch vụ lưu trữ web của Cloudways dành cho PHP và khởi chạy máy chủ PHP cùng với ứng dụng, bạn có thể thấy thư mục nhật ký tại thư mục gốc quản lý nhật ký máy chủ. Bạn có thể tìm thấy cả nhật ký Apache và Nginx ở đó, giúp bạn xác định nhật ký lỗi tiềm ẩn. Vì Cloudways không cho phép người dùng chỉnh sửa php. ini (bạn có thể yêu cầu nhân viên hỗ trợ trực tiếp làm điều đó cho bạn);

Làm cách nào để xem nhật ký lỗi PHP?

Tất nhiên, bạn cũng có quyền truy cập vào PHP-FPM nơi bạn có thể thêm php. ini để ghi lỗi PHP

Làm cách nào để xem nhật ký lỗi PHP?

Từ cuối cùng

Nhật ký lỗi PHP giúp bạn khắc phục sự cố trên trang web bằng cách ghi nhật ký chi tiết lỗi, bao gồm tệp PHP và dòng mã cần sửa

Bài viết này đã chứng minh cách ghi lỗi trong PHP được cấu hình trong tệp php. tập tin ini. Hơn nữa, nó thảo luận về cách ghi nhật ký lỗi đúng cách cũng như cách kích hoạt và tự động ghi nhật ký lỗi PHP, giúp công việc của nhà phát triển đi đúng hướng

Nếu bạn thấy bài viết này hữu ích và muốn chia sẻ quan điểm của mình về chủ đề này, vui lòng viết ra các đề xuất của bạn trong phần bình luận bên dưới

Q. Thư viện ghi lỗi PHP nào là tốt nhất để sử dụng?

A. Monolog là một trong những thư viện ghi lỗi PHP tốt nhất hiện có trên thị trường. Nó cung cấp các hoạt động ghi nhật ký nâng cao cho các trình xử lý khác nhau bao gồm cơ sở dữ liệu, bảng điều khiển trình duyệt, giải pháp trò chuyện và các giải pháp khác

Q. Phải làm gì nếu nhật ký lỗi PHP không hoạt động?

A. Đầu tiên, đặt log_errors = on trong php. ini, nó có thể hữu ích nếu việc ghi nhật ký lỗi PHP của bạn không hoạt động
Nếu nó vẫn không hoạt động, hãy đảm bảo rằng chỉ thị error_log đã được thiết lập và thư mục trong đó phải được ghi bởi người dùng mà Apache đang chạy bên dưới

Đánh giá của khách hàng tại

Làm cách nào để xem nhật ký lỗi PHP?

“Dịch vụ lưu trữ trên nền tảng đám mây có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”

Sanjit C [Nhà phát triển trang web]

Inshal Ali

Inshal là Nhà tiếp thị nội dung tại Cloudways. Với nền tảng về khoa học máy tính, kỹ năng nội dung và rất nhiều sáng tạo, anh ấy đã giúp doanh nghiệp vươn tới bầu trời và vượt xa thông qua nội dung nói ngôn ngữ của khách hàng của họ. Ngoài công việc, bạn sẽ thấy anh ấy chủ yếu trong một số trò chơi trực tuyến hoặc trên sân bóng

Làm cách nào để kiểm tra nhật ký lỗi trong PHP?

Tìm mục nhập Tệp cấu hình (php. Tìm phần Xử lý lỗi và ghi nhật ký của php. tập tin ini. Đảm bảo rằng cả display_errors = On, display_startup_errors = On và log_errors = On đều có mặt và không bị ghi chú. Kiểm tra giá trị của error_log - điều này cho bạn biết vị trí của các lỗi tệp được ghi vào

Làm cách nào để hiển thị tất cả các lỗi PHP?

Để hiển thị tất cả các lỗi PHP . ini_set ('lỗi hiển thị', 1); . The ini_set() function will attempt to override the PHP ini file's configuration.

Làm cách nào để bật nhật ký lỗi PHP?

Để bật ghi nhật ký lỗi cho trang web hoặc ứng dụng của bạn, hãy làm theo các bước sau. .
Xác định vị trí php. ini trên máy chủ của bạn
Tìm dòng chứa mục error_reporting
Đảm bảo không có dấu chấm phẩy (;) trước mục nhập
Đặt mục error_reporting bằng mức ghi nhật ký mong muốn (được đề cập tiếp theo)

Nhật ký PHP được lưu trữ ở đâu?

"Php lưu trữ nhật ký lỗi trong /var/log/apache2 nếu php là apache2" không có trên RHEL, v.v., nơi tên của gói .