2014-06-25 14 views
8

Trên máy tính Ubuntu:exit (1) trong kết quả tập tin trong kịch bản mã trạng thái 0

$ php -v 
PHP 5.5.10-1~dotdeb.1 (cli) (built: Mar 6 2014 18:55:59) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 
    with uopz v2.0.4, Copyright (c) 2014, by Joe Watkins <[email protected]> 
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans 

tập tin test.php của tôi rất đơn giản:

<?php 
exit(1); 

Tôi mong chờ lệnh này php test.php || echo "error" để hiển thị " lỗi "nhưng nó thoát với mã trạng thái 0.

$ php test.php 
$ echo $? 
0 

Nhưng trên cùng một máy có cùng mã, nhưng không có trong tệp hoạt động như mong đợi:

$ php -r "exit(1);" || echo "error" 
error 

hoặc

$ php -r "exit(1);" 
$ echo $? 
1 

Trên máy tính khác nhau (archlinux) với php:

PHP 5.5.13 (cli) (built: May 29 2014 05:46:58) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 

Mọi trường hợp làm việc như mong đợi, ngay cả khi đang chạy từ file mã trạng thái là 1.

Đây là vấn đề thực sự vì git hooks phụ thuộc vào mã trạng thái và Jenkins và Tôi không thể google nó ra.

Có thể liên quan đến cấu hình bằng cách nào đó không? Tôi đã kiểm tra cli php.ini và không thể tìm thấy bất cứ điều gì đáng ngờ.

+4

Lần đầu tiên bạn bắt đầu 'php' và lần khác bạn bắt đầu' php5'. Có lẽ có một sự khác biệt trong đó? – GolezTrol

+0

Thật kỳ lạ. Nó hoạt động ở đây: http://codepad.org/04NRRPxe. – Tyler

+0

Hoạt động như mong đợi trên máy của tôi: https://pastee.org/9fk8k – hjpotter92

Trả lời

7

Phần mở rộng uopz là vấn đề. Nó "làm hỏng" mã thoát. Đã có bug mở về sự cố này.

Bạn có thể thử đặt cấu hình uopz.overloads=0 như được đề xuất trong các nhận xét lỗi. Điều đó, thật không may đã không làm việc cho tôi. Chỉ vô hiệu hóa tiện ích mở rộng đã khắc phục sự cố.

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