ホームページ  >  記事  >  バックエンド開発  >  php exec() の特定のシェル結果が間違っているのは、php の grep がバイナリ ストリームではなくテキスト ストリームのみを処理できるためです。

php exec() の特定のシェル結果が間違っているのは、php の grep がバイナリ ストリームではなくテキスト ストリームのみを処理できるためです。

WBOY
WBOYオリジナル
2016-06-13 12:52:03810ブラウズ

php exec() の特定のシェル結果が間違っているのは、php の grep がバイナリ ストリームではなくテキスト ストリームのみを処理できるためです。
Linux コマンドラインでテストする場合は問題ありません。しかし、php の exec には非常に奇妙な問題があります。

結果エラー:

エラー メッセージは次のとおりです: cat: write error: Broken Pipe


多くの努力と多くの情報を確認した後、ついに解決しました。

grep に -a オプションを追加すると問題ありません

grep -a オプションの意味: バイナリ ファイルをテキストであるかのように処理します。これは --binary-files=text オプション

と同等です。

cat であるはずのこのファイルの内容にはバイナリ ストリームが含まれているため、grep がそれを認識できません



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。