2010-02-09 22 views
18

Tôi đang thử nghiệm lệnh php exec:Mã return_var PHP?

http://php.net/exec

và tôi nhận được lại một mã kết quả của 127.

mã php của tôi là:

<? 

print "<br>executing 'hello':<br><b>"; 
exec ("hello", $output, $result); 
var_dump($output); 
print "<br>$result"; 
print "<br></b>end hello."; 


print "<br><hr><br>"; 


print "<br>executing 'dir':<br><b>"; 
exec("dir", $output2, $result2); 
var_dump($output2); 
print "<br>$result2"; 
print "<br></b>end dir."; 

?> 

Và đầu ra là:

executing 'hello': 
array(0) { } 
127 
end hello. 


executing 'dir': 
array(2) { [0]=> string(42) "bs1.jpg hello index.htm ml1_1.jpg pp1.jpg" } 
0 
end dir. 

php tài liệu (như xa như tôi có thể tìm thấy) nói điều này:

return_var

Nếu đối số return_var có mặt cùng với các tham số đầu ra , sau đó tình trạng trở lại của lệnh thực hiện sẽ được ghi cho biến này.

... nhưng không có danh sách các khả năng đầu ra hoặc cách tìm kiếm chúng.

Mọi đề xuất?

Trả lời

18

mã Return có thể là một chút tùy ý. Về cơ bản, bất kỳ giá trị trả về khác không là một lỗi. Here's a list của một số phổ biến, nhưng thông thường, trừ khi bạn đang làm việc với một chương trình cụ thể, nó dễ dàng hơn để chỉ giả định khác không = một số lỗi đã được tìm thấy, trái ngược với cố gắng để ánh xạ một số chương trình khác nhau cho mã lỗi cụ thể.

9

Mã trả về 127 có nghĩa là Không thể tìm thấy thủ tục được chỉ định.

Giả sử bạn đang ở trên Windows, Windows System Error Codes

+0

Không nên là _command không tìm thấy_ hoặc _illegal lệnh_? –

+1

Tôi đang sử dụng Linux, nhưng điều đó đã giúp ích rất nhiều! http://www.faqs.org/docs/abs/HTML/exitcodes.html –

1

exec() hoạt động trên một tệp bên ngoài và nhận mã trả lại từ đó hoặc từ hệ điều hành. Nếu 127 đến từ hệ điều hành, điều đó có nghĩa là tệp không được tìm thấy trong đường dẫn đã xác định của bạn.

Nếu, mặt khác, 127 đến từ ứng dụng bạn đang chạy, bạn sẽ phải kiểm tra tài liệu cho ứng dụng đó để biết ý nghĩa của nó.

3

Giá trị trả lại hoàn toàn tùy ý. Khi bạn viết một chương trình bạn có thể làm cho nó trở lại bất cứ giá trị nào bạn muốn. Trong PHP, bạn có thể làm điều đó với các cấu trúc exit ngôn ngữ:

<?php 
exit(33); 

Bạn có thể tìm ra các mã trạng thái chính xác cho một phần cụ thể của phần mềm trên tài liệu của nó (cho rằng tác giả thực sự tài liệu về nó). Tuy nhiên, có thỏa thuận chung rằng 0 có nghĩa là "OK" và bất cứ điều gì khác có nghĩa là "có một vấn đề", do đó, kiểm tra đối với số không bình thường là đủ.

Trong trường hợp của bạn, có vẻ như bạn đang cố gắng thực thi chương trình không tồn tại. PHP thực hiện các chương trình bên ngoài thông qua hệ vỏ để giá trị có khả năng đến từ bash hoặc bất kỳ vỏ mặc định nào bạn có.Trong Unix, có một số exit codes with special meanings và có nghĩa là lệnh không được tìm thấy.