2010-03-01 41 views
19

Đôi khi, trong khi mã hóa trong PHP chúng ta có được phân tích cú pháp hoặc cú pháp lỗi như những:Danh sách tất cả các lỗi PHP có thể

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4 

Tôi muốn biết, nếu có một danh sách tất cả các lỗi có thể là PHP thông dịch viên có thể xuất. Tôi đã tìm kiếm php.net, nhưng không thể tìm thấy điều đó. Tôi cần danh sách này cho mục đích học tập.

+0

lỗi Đó có lẽ chỉ vì bạn quên để đóng dòng trước đó của bạn. – Layke

+3

@Laykes: Tôi nghĩ bạn phải đọc lại câu hỏi;) –

+0

Vâng, tôi đã cố ý làm vậy, để lấy ví dụ về lỗi. Tôi quan tâm nhiều hơn đến việc nhận được danh sách thực tế các thông báo lỗi có thể, không phải để giải quyết chúng - đó là một vấn đề khác :) –

Trả lời

9

Không có cách nào tốt. Ngay cả grep gợi ý cho zend_Error() là vô ích. Các lỗi của loại mà bạn đang hiển thị trong câu hỏi chủ yếu được tạo bởi trình tạo trình phân tích cú pháp bison và PHP đơn giản lấy nó từ đó. Những điều tương tự xảy ra với lỗi được báo cáo bởi hệ điều hành (như lỗi khi mở tệp). Các nhà phát triển PHP có thể không thực sự tạo ra một danh sách tốt cho các lỗi này vì các lỗi phụ thuộc vào hệ điều hành mà nó đang chạy và các phiên bản được sử dụng trong khi biên dịch.

Điều duy nhất grepping cho zend_error() và php_Error_docref() có thể cho bạn thấy là tổng quan chung về các loại lỗi có thể xảy ra nhưng không phải là tất cả các thông báo lỗi.

2

tôi không nhận thức được một danh sách như vậy, nhưng bạn luôn có thể tải về hoặc các nguồn thanh toán php và làm điều gì đó như

find . -name "*.c" | xargs grep "zend_error" 
+0

Tôi đã xem xét điều này. Nếu không có tài liệu về lỗi, tôi sẽ phải làm như vậy. –

5

Tôi không biết nếu tồn tại một danh sách toàn diện các lỗi PHP có thể, nhưng về lỗi phân tích cú pháp, bạn nên kiểm tra các danh sách các PHP Parser mã thông báo

http://php.net/manual/en/tokens.php

đây là những gì hướng dẫn nói:

Various parts of the PHP language are represented internally by types like T_SR. PHP outputs identifiers like this one in parse errors, like "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.

+0

Cảm ơn danh sách này khá hữu ích đối với tôi! –

+0

-1 điều này là tốt để biết, nhưng làm thế nào nó liên quan đến thông báo lỗi? –

+0

@Pekka: Liên kết này cung cấp cho bạn danh sách mã thông báo theo tên, vì vậy bạn có thể thấy mã thông báo nào trong mã của mình gọi lỗi trình phân tích cú pháp, do đó bạn có thể giải quyết lỗi phân tích cú pháp của mình, vui lòng đọc phần giới thiệu ngắn ở đầu trang tại http : //php.net/manual/en/tokens.php –

0

Điều này cho tôi 1346 lượt truy cập cho tôi trên nguồn PHP mới nhất (bao gồm cả các bản sao). Nó có thể là một cách tốt để đi, tuy nhiên danh sách xa hoàn thành do những lý do vạch ra bởi @ johannes.

Mặt khác, sẽ rất khó xác định loại lỗi phân tích cú pháp cụ thể, vì tôi tưởng tượng chúng được biên dịch bởi trình phân tích cú pháp trong thời gian chạy và không được liệt kê ở bất kỳ đâu trong nguồn.

Bạn có thể giải thích chi tiết về những gì bạn cần không? Có lẽ bạn có thể xác định một "lớp phụ" của các lỗi đã đủ cho những gì bạn cần.

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