PHP 종료 상태 255 : 무슨 뜻입니까?


33

나는 최근에 PHP 5.2.9 바이너리를 컴파일했고 , PHP 스크립트를 사용해 보았습니다. 문제없이 일부 스크립트를 실행할 수 있지만 그 중 하나는 오류나 경고없이 종료되는 도중에 실행이 중단됩니다. 프로세스의 리턴 상태 코드는 255입니다.

설명서에서 그러한 상태가 '예약 됨'이라고 읽었습니다. 문제는 무엇을 위해서인가?

PHP 실행 파일에서 누락 된 종속성과 관련이 있다고 생각하지만 확실하지 않습니다.

종료 코드 255의 의미가 무엇인지 아는 사람이 있습니까?

PS PHP 스크립트에는 오류가 없으며 다른 컴퓨터에서 정상적으로 실행됩니다.

답변:


34

255 는 오류입니다. 치명적인 오류가 발생하여 동일한 종료 코드를 재현 할 수 있습니다.

즉, 오류보고가 어떻게 든 숨겨져 있음을 의미 할 수 있습니다.

  • error_reporting이 정의되어 있지 않으며 PHP는 전혀 오류를보고하지 않습니다
  • @(에러 억제 연산자) 오류 출력을 숨긴다
  • STDERR은 다른 곳으로 리디렉션됩니다 (php -f somefile.php 2> / dev / null, 리디렉션 제거)
  • 종속성 누락으로 인해 여전히 내부 오류 일 수 있으며 치명적 오류는 프로그램 충돌과 동일한 종료 코드를 갖습니다.

1
드문 경우이지만 Windows의 경우이 php.ini파일 은 손상된 파일 과 관련이 있습니다 (예 : 파일 내부의 문자가 깨졌습니다). 이것을 알아 내기 위해 2 시간이 걸렸습니다. 팁 : 스크립트 (즉,이 경우 composer.phar)와 함께 작동 php -n composer.phar, 다음 php.ini파일이 아마 나뉩니다.
tftd April

9

또한 의미 할 수 있었다 /etc/php5/cli/php.ini또는 (데비안 / 우분투) /etc/php.ini(RHEL에 / CentOS는 / 등.)가 display_errors = Off있는 않는 명령 줄 스크립트에서 오류 또는 경고, 아무데도 갈 것을 의미한다 log_errors = On(또한 참조 error_log설정).

다음을 사용하는 랩퍼 스크립트로 스크립트를 실행하십시오. php -d display_errors=on ...


3
-d display_errors=on팁 에 대해 감사의 말을 전하고 싶습니다. 모든 예외 로깅을 자체적으로 처리하려고하지만 종종 예외를 먹는 누군가의 PHP 앱용 사용자 지정 스크립트를 디버깅하려고했습니다. 이 플래그를 사용하여 CLI에 인쇄하는 예외를 얻을 수 있습니다!
geerlingguy

필자의 경우 이것은 PHP 스크립트가 최대 실행 시간을 초과했음을 보여줍니다. 좋은 팁 주셔서 감사합니다!
Max Vernon

0

PHP로 억제 된 오류 메시지 (행은 @로 시작)로 인해 발생할 수 있습니다. 나는 줄을 찾았다

grep -r "@" src/ 

그런 다음 @을 주석 처리했습니다. 이 후 실제 오류가 발생하여 쉽게 해결할 수있었습니다. 나는 또한 PHPStorm이 이미 동일한 오류를 발견했지만 그것을 고치거나 눈치 채지 못했음을 알았습니다.


0

또한

  • /etc/php5/cli/php.ini (데비안 / 우분투)

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

설정했다

display_errors = Off 

즉, 명령 줄 스크립트의 오류나 경고는 아무데도 나타나지 않습니다.

log_errors = On 

error_log 설정도 참조하십시오.

래퍼로 스크립트를 실행 해보십시오


0

제 경우에는 xdebug.max_nesting_level값 이 낮아 xDebug가 사망했습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.