最近PHP 5.2.9バイナリをコンパイルし、それを使用していくつかのPHPスクリプトを実行しようとしました。一部のスクリプトは問題なく実行できますが、そのうちの1つが停止しますエラーまたは警告なしで終了する途中で実行され、プロセスの返されたステータスコードは255です。
マニュアルで、そのようなステータスが「予約済み」であると読みました。問題は:何のために?
PHP実行可能ファイルの依存関係の欠如と関係があると思いますが、確信が持てません。
255の終了コードが何を意味するのか誰もが知っていますか?
追伸PHPスクリプトにエラーはありません。他のマシンで問題なく実行できます。
255はエラーです。致命的なエラーが発生したため、同じ終了コードを再現できました。
これは、エラー報告が何らかの理由で非表示になっていることを意味します。これにはいくつかの原因が考えられます。
@
(エラー抑制演算子)は、エラーの出力を非表示にしますまた、/etc/php5/cli/php.ini
(Debian/Ubuntuの場合)または/etc/php.ini
(RHEL/CentOS/etc。の場合)にdisplay_errors = Off
があることも意味します。つまり、コマンドラインスクリプトからのエラーまたは警告はlog_errors = On
(error_log
設定も参照)を除いて、どこにも行きません。
php -d display_errors=on ...
を使用するラッパースクリプトでスクリプトを実行してみてください
私の場合、それはxdebug.max_nesting_level
値。
それはまた、
/etc/php5/cli/php.ini(Debian/Ubuntu上)
/etc/php.ini(RHEL/CentOS/etc)
設定しました
display_errors = Off
つまり、コマンドラインスクリプトからのエラーや警告は、
log_errors = On
Error_log設定も参照してください。
ラッパーでスクリプトを実行してみてください
これは、PHP抑制されたエラーメッセージ(行が@で始まる)が原因である可能性があります。
grep -r "@" src/
@をコメント化しました。この後、実際のエラーが発生し、簡単に修正できました。その後、PHPStormが同じエラーをすでに発見していることにも気付きましたが、修正/通知していませんでした。
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の場所を定義します。
エラーメッセージが表示されるはずです。