web-dev-qa-db-ja.com

PHP終了ステータス255:どういう意味ですか?

最近PHP 5.2.9バイナリをコンパイルし、それを使用していくつかのPHPスクリプトを実行しようとしました。一部のスクリプトは問題なく実行できますが、そのうちの1つが停止しますエラーまたは警告なしで終了する途中で実行され、プロセスの返されたステータスコードは255です。

マニュアルで、そのようなステータスが「予約済み」であると読みました。問題は:何のために?

PHP実行可能ファイルの依存関係の欠如と関係があると思いますが、確信が持てません。

255の終了コードが何を意味するのか誰もが知っていますか?

追伸PHPスクリプトにエラーはありません。他のマシンで問題なく実行できます。

34
Silvio Donnini

255はエラーです。致命的なエラーが発生したため、同じ終了コードを再現できました。

これは、エラー報告が何らかの理由で非表示になっていることを意味します。これにはいくつかの原因が考えられます。

  • error_reportingは定義されておらず、phpはエラーをまったく報告しません
  • @(エラー抑制演算子)は、エラーの出力を非表示にします
  • STDERRは別の場所にリダイレクトされます(php -f somefile.php 2>/dev/null、リダイレクトを削除します)
  • これは、依存関係が欠落しているための内部エラーであり、致命的なエラーにはプログラムのクラッシュと同じ終了コードが含まれている可能性があります。
37
Weboide

また、/etc/php5/cli/php.ini(Debian/Ubuntuの場合)または/etc/php.ini(RHEL/CentOS/etc。の場合)にdisplay_errors = Offがあることも意味します。つまり、コマンドラインスクリプトからのエラーまたは警告はlog_errors = Onerror_log設定も参照)を除いて、どこにも行きません。

php -d display_errors=on ...を使用するラッパースクリプトでスクリプトを実行してみてください

10
Alastair Irvine

私の場合、それはxdebug.max_nesting_level値。

0
zored

それはまた、

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

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

設定しました

display_errors = Off 

つまり、コマンドラインスクリプトからのエラーや警告は、

log_errors = On 

Error_log設定も参照してください。

ラッパーでスクリプトを実行してみてください

0
Alauddin

これは、PHP抑制されたエラーメッセージ(行が@で始まる)が原因である可能性があります。

grep -r "@" src/ 

@をコメント化しました。この後、実際のエラーが発生し、簡単に修正できました。その後、PHPStormが同じエラーをすでに発見していることにも気付きましたが、修正/通知していませんでした。

0
Antti Hätinen

Php-cliが使用したphp.iniを見つけます。

brain@cordova:~% php -i | grep "php.ini"

8:Configuration File (php.ini) Path => /etc/php/7.3/cli
9:Loaded Configuration File => /etc/php/7.3/cli/php.ini

Display_errorsパラメータがアクティブであることを確認します。

brain@cordova:~% php -i | grep "error"

106:display_errors => On => On
114:error_log => /tmp/php_errors.log => /tmp/php_errors.log
116:error_reporting => 22527 => 22527
134:log_errors => On => On

Display_errorsおよびlog_errorsがONであることを確認してください。

エラーをファイルに記録するためのerror_logの場所を定義します。

エラーメッセージが表示されるはずです。

0
Brain90