0

Debian Squeeze 32Ubuntu 11.10 Server 64の 2 つのサーバーがあります。同じコマンドを使用した同じスクリプトの動作は大きく異なります。

スクリプト test.php:

<?php for ($i = 0; $i < 5; $i++) { echo $i, "\n"; sleep(1); }

指示:

php -q test.php &
ps | grep php

Debain: 数値が表示され、プロセス タイトルはphp -q test.php予想どおりです。pidof "php -q test.php"正常に動作します。

Ubuntu: 番号はありません。工程タイトルはphppidof "php -q test.php"動作せず、使用できませんpidof php

Ubuntu の何が問題になっていますか?

アップデートWOW! pgrep -f "php -q test.php"うまく機能しますが、そうではありpidof "php -q test.php"ません。

Update 2これが当てはまるかどうかはわかりませんが、Debian では通常のコンソールで作業し、Ubuntu には SSH でアクセスしています。

4

1 に答える 1

0

出力が欠落している問題は既知であり、readline拡張によって引き起こされます。

PHPマニュアルから:

readlineが有効になっている場合、phpはターミナルモードを切り替えてラインバッファ入力を受け入れます。これは、インタラクティブコマンドにパイプするときにcliを使用する適切な方法は、phpが入力にターミナルを使用していないことを明示的に指定することです。

php somescript.php < /dev/null | less

DebianとUbuntuの違いは、UbuntuのPHPパッケージではreadlineが有効になっており、Debiansパッケージでは無効になっていることです。

したがって、問題の解決策は、パイプを使用していなくても、次のようになります。

php -q test.php < /dev/null &

stdinをリダイレクトすると/dev/null、期待どおりに番号がターミナルに出力されます。

このバグレポートも読むことができます

于 2012-12-14T19:13:56.737 に答える