2014-06-25 14 views
8

su Ubuntu macchina:uscita (1) nei risultati di file nello script codice di stato 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 

Il mio file test.php è semplice:

<?php 
exit(1); 

mi aspetterei questo comando php test.php || echo "error" per mostrare " errore", ma esce con codice di stato 0.

$ php test.php 
$ echo $? 
0 

ma sulla stessa macchina lo stesso codice, ma non nel file funziona come atteso:

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

o

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

Sulla macchina differente (Archlinux) con 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 

Tutti i casi funzionano come previsto, anche quando il codice viene eseguito dal file il codice di stato è 1.

Questo è un vero problema perché git git dipende da questi codici di stato e Jenkins e Non potrei google fuori.

Potrebbe essere in qualche modo correlato alla configurazione? Ho controllato cli php.ini e non ho trovato nulla di sospetto.

+4

La prima volta che si avvia 'php' e le altre volte si avvia' php5'. Forse c'è una differenza in questo? – GolezTrol

+0

È strano. Funziona qui: http://codepad.org/04NRRPxe. – Tyler

+0

Funziona come previsto sulla mia macchina: https://pastee.org/9fk8k – hjpotter92

risposta

7

L'estensione uopz è il problema. "Corrompe" il codice di uscita. C'è stato un bug aperto su questo problema.

Si può provare a impostare la configurazione uopz.overloads=0 come raccomandato nei commenti del bug. Questo, purtroppo, non ha funzionato per me. La disabilitazione dell'estensione ha risolto solo il problema.

Problemi correlati