PHP là một ngôn ngữ lập trình mạnh mẽ được sử dụng bởi nhiều trang web trên thế giới. Tuy nhiên, đôi khi PHP có thể ném một thông báo lỗi nói rằng Thông báo: Biến không xác định trên trang web của bạn. Điều này có thể gây nhầm lẫn cho khách truy cập trang web của bạn và làm hỏng trải nghiệm người dùng của họ. Trong bài viết này, chúng tôi sẽ xem xét thông báo lỗi này có nghĩa là gì và cách khắc phục thông báo lỗi này.
Khi bạn nhận được một thông báo lỗi, thông báo thông báo: biến không xác định, trong PHP, điều đó có nghĩa là bạn đang cố gắng sử dụng một biến hoặc hằng số không được xác định.
Đây là một ví dụ về lỗi này
Trong ví dụ trên, chúng tôi đã xác định biến $ DOB nhưng đang gọi $ biến tuổi không được xác định. Vì vậy, bạn sẽ thấy lỗi sau.
Notice: Undefined variable: age in \test.php on line 3
Có hai cách để khắc phục lỗi này. Hoặc bạn có thể giải quyết lỗi này hoặc bỏ qua lỗi này.
Cũng đọc: Cách chạy tập lệnh PHP tự động
Khắc phục lỗi bằng cách sử dụng hàm isset []
Bạn có thể sử dụng Xác định các biến của mình làm chức năng toàn cầu và sử dụng ISSET [] để kiểm tra xem biến có được đặt hay không trước khi gọi nó. Đây là một ví dụ
Output Variable age is not set
Cũng đọc: Cách tắt Duyệt thư mục trong Apache
Khắc phục lỗi bằng cách đặt biến thành giá trị trống hoặc giá trị mặc định
Một cách khác để khắc phục vấn đề này, là đặt nó là trống.
Output Age: 0
Cũng đọc: Cách ngăn chặn tải xuống tệp trực tiếp trong Apache
Chúng tôi cũng có thể bỏ qua thông báo này thay vì sửa chữa nó, mặc dù không nên làm như vậy. Dưới đây là một vài cách để vô hiệu hóa thông báo lỗi này xuất hiện.
Tắt thông báo hiển thị trong tệp php.ini
Mở tệp php.ini trong trình soạn thảo văn bản. Tìm dòng sau
error_reporting = E_ALL
Thay đổi nó thành
error_reporting = E_ALL & ~E_NOTICE
Khởi động lại máy chủ Apache để áp dụng các thay đổi. Bây giờ trình biên dịch PHP sẽ hiển thị tất cả các lỗi ngoại trừ ‘thông báo loại lỗi.
Cũng đọc: Cách kiểm tra xem mod_deflate có được bật không
Tắt thông báo hiển thị trong mã PHP
Nếu bạn không có quyền truy cập vào tệp php.ini, thì chỉ cần thêm dòng sau ở đầu tệp PHP của bạn để vô hiệu hóa các lỗi thông báo.
Đó là nó. Trong bài viết này, chúng tôi đã học được cách đối phó với lỗi biến không xác định trong PHP. Sử dụng các biến mà không xác định giá trị của chúng gây ra lỗi này và có thể dễ dàng tránh được bằng cách sử dụng hàm isset [] để kiểm tra xem chúng có được đặt hay không, trước khi sử dụng chúng.
Cũng đọc: Cách giới hạn các yêu cầu trên mỗi IP trong Apache
Bài viết liên quan:
Tại sao chuyện này đang xảy ra?
Theo thời gian, PHP đã trở thành một ngôn ngữ tập trung vào bảo mật hơn. Các cài đặt đã từng bị tắt theo mặc định hiện được bật theo mặc định. Một ví dụ hoàn hảo về điều này là
Notice: Undefined variable: age in \test.php on line 31, được bật theo mặc định kể từ Php 5.4.0.
Hơn nữa, theo tài liệu PHP, theo mặc định,
Notice: Undefined variable: age in \test.php on line 32 bị vô hiệu hóa trong tệp php.ini. Tài liệu PHP khuyên bạn nên bật nó cho mục đích gỡ lỗi. Tuy nhiên, khi tôi tải xuống PHP từ kho lưu trữ Ubuntu và từ Windows Stack của Bitnami, tôi sẽ thấy một cái gì đó khác.
; Common Values:
; E_ALL [Show all errors, warnings and notices including coding standards.]
; E_ALL & ~E_NOTICE [Show all errors, except for notices]
; E_ALL & ~E_NOTICE & ~E_STRICT [Show all errors, except for notices and coding standards warnings.]
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR [Show only errors]
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; //php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Lưu ý rằng
Notice: Undefined variable: age in \test.php on line 33 thực sự được đặt thành giá trị sản xuất theo mặc định, không phải là giá trị "mặc định" theo mặc định. Điều này có phần khó hiểu và không được ghi nhận bên ngoài php.ini, vì vậy tôi đã không xác nhận điều này trên các phân phối khác.not validated this on other distributions.
Tuy nhiên, để trả lời câu hỏi của bạn, lỗi này xuất hiện ngay bây giờ khi nó không bật lên trước đây vì:
Bạn đã cài đặt PHP và cài đặt mặc định mới có phần được ghi lại kém nhưng không loại trừ
Notice: Undefined variable: age in \test.php on line 3
2.Notice: Undefined variable: age in \test.php on line 3
2 Các cảnh báo như các biến không xác định và các chỉ mục không xác định thực sự giúp làm cho mã của bạn sạch hơn và an toàn hơn. Tôi có thể nói với bạn rằng, nhiều năm trước, việc giữNotice: Undefined variable: age in \test.php on line 3
2 đã buộc tôi phải khai báo các biến của tôi. Nó làm cho nó dễ dàng hơn rất nhiều để học C. Trong C, không tuyên bố các biến lớn hơn nhiều so với phiền toái.
Tôi có thể làm gì với nó?
Tắt
Notice: Undefined variable: age in \test.php on line 3
2 bằng cách sao chép "giá trị mặc định"Notice: Undefined variable: age in \test.php on line 3
8 và thay thế nó bằng những gì hiện không được đưa ra sau khi ký bằng trongNotice: Undefined variable: age in \test.php on line 3
9. Khởi động lại Apache hoặc PHP nếu sử dụng CGI hoặc FPM. Hãy chắc chắn rằng bạn đang chỉnh sửa tệp Php.ini "RIGHT". Chính xác sẽ là Apache nếu bạn đang chạy PHP với Apache, FPM hoặc PHP-FPM nếu chạy PHP-FPM, CGI nếu chạy PHP-CGI, v.v. Đây không phải là phương thức được đề xuất, nhưng nếu bạn có mã di sản sẽ cực kỳ khó chỉnh sửa, sau đó nó có thể là đặt cược tốt nhất của bạn.Tắt
Notice: Undefined variable: age in \test.php on line 3
2 trên cấp tệp hoặc cấp thư mục. Điều này có thể thích hợp hơn nếu bạn có một số mã di sản nhưng muốn làm mọi thứ theo cách "đúng". Để làm điều này, bạn nên tham khảo Apache & NBSP; 2, Nginx hoặc bất cứ máy chủ nào bạn chọn. Trong Apache, bạn sẽ sử dụngOutput Variable age is not set
1 bên trongOutput Variable age is not set
2.Viết lại mã của bạn để được sạch hơn. Nếu bạn cần làm điều này trong khi chuyển sang môi trường sản xuất hoặc không muốn ai đó nhìn thấy lỗi của bạn, hãy đảm bảo rằng bạn đang vô hiệu hóa bất kỳ màn hình nào và chỉ đăng nhập lỗi của bạn [xem
Output Variable age is not set
3 vàOutput Variable age is not set
4 trong Php.ini và máy chủ của bạn cài đặt].logging your errors [seeOutput Variable age is not set
3 andOutput Variable age is not set
4 in php.ini and your server settings].
Để mở rộng trên tùy chọn 3: Đây là lý tưởng. Nếu bạn có thể đi theo con đường này, bạn nên. Nếu bạn không đi theo tuyến đường này ban đầu, hãy xem xét việc di chuyển tuyến đường này cuối cùng bằng cách kiểm tra mã của bạn trong môi trường phát triển. Trong khi bạn đang ở đó, hãy loại bỏ
Output Variable age is not set5 và
Output Variable age is not set6 để xem những gì có thể xảy ra trong tương lai. Bạn sẽ thấy rất nhiều lỗi lạ, nhưng nó sẽ ngăn bạn gặp bất kỳ vấn đề khó chịu nào khi bạn cần nâng cấp PHP trong tương lai.
Các lỗi có nghĩa là gì?
Output Variable age is not set7 - Điều này xảy ra khi một biến chưa được xác định trước khi sử dụng. Khi tập lệnh PHP được thực thi, nó bên trong chỉ giả định giá trị null. Tuy nhiên, bạn cần kiểm tra một biến trong kịch bản nào trước khi được xác định? Cuối cùng, đây là một đối số cho "mã cẩu thả". Là một nhà phát triển, tôi có thể nói với bạn rằng tôi yêu nó khi tôi thấy một dự án nguồn mở trong đó các biến được xác định là cao trong phạm vi của chúng như chúng có thể được xác định. Nó giúp cho việc biết các biến nào sẽ xuất hiện trong tương lai dễ dàng hơn và giúp đọc/tìm hiểu mã dễ dàng hơn.
function foo[]
{
$my_variable_name = '';
//....
if [$my_variable_name] {
// perform some logic
}
}
Output Variable age is not set8 - Điều này xảy ra khi bạn cố gắng truy cập một giá trị trong một mảng và nó không tồn tại. Để ngăn ngừa lỗi này, hãy thực hiện kiểm tra có điều kiện.
// verbose way - generally better
if [isset[$my_array['my_index']]] {
echo "My index value is: " . $my_array['my_index'];
}
// non-verbose ternary example - I use this sometimes for small rules.
$my_index_val = isset[$my_array['my_index']]?$my_array['my_index']:'[undefined]';
echo "My index value is: " . $my_index_val;
Một tùy chọn khác là khai báo một mảng trống ở đầu chức năng của bạn. Không phải lúc nào cũng khả thi.
Notice: Undefined variable: age in \test.php on line 30
[Mẹo bổ sung]
- Khi tôi gặp phải những vấn đề này và các vấn đề khác, tôi đã sử dụng Netbeans IDE [miễn phí] và nó đã cho tôi một loạt các cảnh báo và thông báo. Một số trong số họ cung cấp những lời khuyên rất hữu ích. Đây không phải là một yêu cầu và tôi không sử dụng IDE nữa ngoại trừ các dự án lớn. Ngày nay, tôi là một người
Output Variable age is not set
9.