2010-09-21 28 views
9

Tôi đang kiểm tra cấu hình của máy chủ PHP của tôi và tôi cần phải thiết lập các thông số sau như sau:Các giá trị số nồng độ báo cáo lỗi

error_reporting thiết lập để E_ALL & ~E_NOTICE

Tuy nhiên trên máy chủ của tôi một giá trị số là thiết lập:

error_reporting 6135 6135

tôi đã tự hỏi ý nghĩa của nó là gì, và nếu tôi thực sự cần phải thay đổi nó

nhờ

+2

errr tiêu đề đó gây nhầm lẫn – lock

+1

Hoặc không có điều này có ý nghĩa gì cả, hoặc đã đến lúc tôi đi ngủ. – JAL

Trả lời

12

Từ page ta có:

  • E_ALL có giá trị 30719 trong PHP 5.3.x, 6143 trong PHP 5.2.x, 2047 trước

  • E_NOTICE có giá trị 8

Hình như bạn đang sử dụng PHP 5.2.x

Bây giờ, nếu bạn làm E_ALL & ~E_NOTICE Đó là bổ sung bit của E_NOTICE theo sau là bitwise anding với E_ALL chúng tôi nhận được

6143 & (~8) = 6135 
6

Cờ lỗi là sức mạnh của 2 số nguyên, do đó bạn có thể kết hợp chúng sử dụng khai thác bit. Kết quả là một số nguyên giống như bạn thấy nếu bạn đặt nó thành E_ALL & ~ E_NOTICE nó sẽ vẫn kết thúc dưới dạng số nguyên. Những lá cờ bao gồm giá trị 6135 phụ thuộc vào phiên bản php của bạn. Bạn có thể kiểm tra xem một lá cờ có nằm trong nó bằng cách sử dụng bitwise và toán tử hay không, ví dụ:

if ((error_reporting() & E_NOTICE) == E_NOTICE) { 
    echo "E_NOTICE is active"; 
} 
+0

'error_reporting() & E_NOTICE == 0' là sai.Trước hết, '==' có ưu tiên cao hơn '&' để 'error_reporting() & E_NOTICE == 0' tương đương với' error_reporting() & (E_NOTICE == 0) '. Hơn nữa, ngay cả khi bạn sẽ sử dụng '(error_reporting() & E_NOTICE) == 0', nó có nghĩa là biểu thức là true nếu giá trị trả về' error_reporting() 'và giá trị' E_NOTICE' không có điểm chung. – Gumbo

+0

ah có. lỗi của tôi. nên (error_reporting() & E_NOTICE) == E_NOTICE. thx và cố định –

15

Values sử dụng để báo cáo lỗi

E_RECOVERABLE_ERROR 4096 + 
E_USER_NOTICE  1024 + 
E_USER_WARNING  512 + 
E_USER_ERROR   256 + 
E_COMPILE_WARNING  128 + 
E_COMPILE_ERROR  64 + 
E_CORE_WARNING   32 + 
E_CORE_ERROR   16 + 
E_PARSE     4 + 
E_WARNING    2 + 
E_ERROR     1 + 
        = 6135 
+0

Chính xác những gì tôi đang tìm kiếm, (tất nhiên) tôi không thể tìm thấy chúng trong các tài liệu php.net. Chúc mừng! –

+0

tốt đẹp để có cái này khi nhìn thấy một cái gì đó như 'error_reporting (7)' – JSmyth

2
foreach(
    array('E_ALL', 'E_NOTICE', '~E_NOTICE', 'E_ALL&~E_NOTICE') 
    as $s) { 
    eval("\$v=$s;"); 
    printf("%20s = dec %10u = bin %32b\n", $s, $v, $v); 
} 

kết quả

  E_ALL = dec  6143 = bin     1011111111111 
     E_NOTICE = dec   8 = bin        1000 
     ~E_NOTICE = dec 4294967287 = bin 11111111111111111111111111110111 
E_ALL&~E_NOTICE = dec  6135 = bin     1011111110111 
1

Lưu ý rằng error_reporting(-1); sẽ báo cáo tất cả và mọi lỗi PHP.

0

error_reporting 6135 sẽ không đăng nhập Runtime Mọi thông báo, Vì vậy, tốt hơn để sử dụng

error_reporting(E_ALL); 

Tiếp theo

ini_set('display_errors', '0'); 

này sẽ đăng nhập tất cả các lỗi bao gồm cả các thông báo Runtime, Nhưng pevent hiển thị trong trình duyệt. Điều này có thể được sử dụng trong bất kỳ phiên bản PHP nào.

Các vấn đề liên quan