Status de saída do PHP 255: o que isso significa?


33

Recentemente, compilei um binário do PHP 5.2.9 e tentei executar alguns scripts PHP com ele. Posso executar alguns scripts sem problemas, mas um deles interrompe sua execução no meio do caminho, saindo sem erros ou avisos. O código de status retornado do processo é 255.

Eu li no manual que esse status é 'reservado'. A questão é: para quê?

Acredito que tenha algo a ver com dependências ausentes no executável do PHP, mas não tenho certeza.

Alguém sabe o que significa um código de saída 255?

PS Não há erros nos scripts PHP, eles funcionam OK em outras máquinas.

Respostas:


34

255 é um erro, eu poderia reproduzir o mesmo código de saída tendo um erro fatal.

Isso significa que, de alguma forma, seu relatório de erros está oculto, existem algumas causas possíveis para isso:

  • error_reporting não está definido e o php não reporta nenhum erro
  • Um @(operador de supressão de erro) oculta a saída do erro
  • STDERR é redirecionado para outro lugar (php -f somefile.php 2> / dev / null, remova o redirecionamento)
  • Isso ainda pode ser um erro interno devido à falta de dependências e que um erro fatal tenha o mesmo código de saída que uma falha no programa.

1
Em alguns casos raros no Windows isso está relacionado a um partido php.inide arquivo (ou seja, o arquivo tem caracteres quebrada por dentro). Levei duas horas para descobrir isso. Dica: Se o seu script (ou seja composer.phar) funcionar php -n composer.phar, seu php.iniarquivo provavelmente está quebrado.
Tftd 20/04/2015

9

Também pode significar que /etc/php5/cli/php.ini(no Debian / Ubuntu) ou /etc/php.ini(no RHEL / CentOS / etc.) Possui, o display_errors = Offque significa que quaisquer erros ou avisos dos scripts da linha de comando não vão a lugar nenhum, a menos que log_errors = On(veja também a error_logconfiguração).

Tente executar seus scripts com um script wrapper que usa php -d display_errors=on ...


3
Eu só quero dizer obrigado pela -d display_errors=ondica - eu estava tentando depurar um script personalizado para o aplicativo PHP de alguém que tenta lidar com todo o registro de exceções por conta própria, mas muitas vezes come exceções. Usando esse sinalizador, posso obter a exceção para imprimir na CLI!
geerlingguy

No meu caso, isso me mostrou que o script php excedeu o tempo máximo de execução. Obrigado pela ótima dica!
Max Vernon

0

Isso pode ser causado por mensagens de erro suprimidas pelo PHP (a linha começa com @). Eu encontrei a linha por

grep -r "@" src/ 

e depois comentou o @. Depois disso, recebi o erro real e consegui corrigi-lo facilmente. Também notei depois que o PHPStorm já havia descoberto o mesmo erro, mas não o havia corrigido / percebido.


0

Isso também pode significar que

  • /etc/php5/cli/php.ini (no Debian / Ubuntu)

  • /etc/php.ini (no RHEL / CentOS / etc.)

determinou

display_errors = Off 

o que significa que quaisquer erros ou avisos dos scripts da linha de comando não vão a lugar algum, a menos que

log_errors = On 

Veja também a configuração error_log.

Tente executar seus scripts com um wrapper


0

No meu caso, foi a morte do xDebug por causa do baixo xdebug.max_nesting_levelvalor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.