2010-07-27 25 views
15

Tôi gọi php lint từ một tập tin thực thi Windows, như vậy:Tại sao lint không cho tôi biết số dòng và tính chất của lỗi phân tích cú pháp?

@echo off 
for %%f in (*.php) do php -l %%f 

Khi một tập tin chứa một lỗi cú pháp, nó chỉ kết quả đầu ra Errors parsing xxx.php. Có cách nào để làm cho nó nói cho tôi biết bản chất của lỗi là gì, và dòng nó là gì? Có lẽ một công tắc khác?

Trả lời

21

Tôi đã chấp nhận câu trả lời của Charles, nhưng nghĩ tôi nên thêm một vài chi tiết, vì tôi phải thực hiện thêm một số hoạt động săn bắn để tìm hiểu xem phải làm gì.

Vấn đề là tôi không nhìn thấy đầu ra stderr, vì vậy tôi bắt đầu bằng cách thêm 2>&1 vào cuối các lệnh có liên quan. Điều này vẫn không giúp được gì, vì vậy tôi nhận ra rằng vấn đề là PHP không xuất hiện những thứ kỳ cục. Tôi đã đi đến thư mục cài đặt PHP và tìm trong php.ini và thấy rằng theo mặc định, display_errorsOff. Thay đổi nó thành On và bây giờ nó hoạt động.

+16

Ôi trời, điều đó thật bất ngờ. Bạn sẽ nghĩ rằng * yêu cầu PHP kiểm tra cú pháp của một tập tin *, theo mặc định, báo cáo lỗi cú pháp! Hãy nhớ rằng bạn có thể thao tác đối số php.ini từ dòng lệnh bằng cách sử dụng tùy chọn '-d':' php -d display_errors = 1 -l foo.php' – Charles

+0

cảm ơn cho mẹo! (vui lòng chấp nhận câu trả lời này, không phải câu trả lời không chính xác ở trên ;-) – yoyo

0

Bạn đang sử dụng phiên bản PHP nào? Kể từ 5.3, các số dòng được bao gồm trong đầu ra lint:

[[email protected] ~]$ cat syntax_error.php 
<?php 
echo "This line is legal\n"; 
echo I'm a syntax error!\n; 
echo "This line never gets reached.\n" 

[[email protected] ~]$ php -l syntax_error.php 
PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ',' or ';' in syntax_error.php on line 3 

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ',' or ';' in syntax_error.php on line 3 
Errors parsing syntax_error.php 
[[email protected] ~]$ 

Lỗi này xuất hiện hai lần vì nó sẽ xuất hiện ở chế độ stdout và stderr. Đó là thời gian dài dài kể từ khi tôi làm việc với các tệp hàng loạt trên Windows, có thể phiên bản bạn đang sử dụng chỉ phát ra lỗi trên stderr và tệp bó đang loại bỏ đầu ra của stderr?

+0

này đã giúp tôi tìm hiểu những gì vấn đề là, vì vậy tôi đã chấp nhận nó. Xem câu trả lời của tôi để biết thêm chi tiết. – Hammerite

+0

Bạn có thể chấp nhận câu trả lời mà bạn đã đăng bên dưới vì nó thực sự giải thích vấn đề không? –

+0

@Hammerite Vui lòng chuyển đổi xung quanh Cờ được chấp nhận - Tôi sẽ xóa câu trả lời này để làm rõ hơn, nhưng bạn không thể tự xóa câu trả lời được chấp nhận. – Charles

32

Nếu bạn đến đây vì "lỗi phân tích cú pháp foo.php" không có bất kỳ chi tiết và bạn bỏ lỡ những nhận xét Charles, bạn có thể tìm kiếm này:

php -d display_errors=1 -l foo.php

Cảm ơn Charles!

Ví dụ:

[somewhere]# php -l submit.php 

Errors parsing submit.php 

[somewhere]# php -d display_errors=1 -l submit.php 

Parse error: syntax error, unexpected T_VARIABLE in submit.php on line 226 
Errors parsing submit.php
+0

cảm ơn bạn cảm ơn bạn cảm ơn –

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