phpのexecでwrite error: Broken pipe

exec('ls | head -n1")

phpでこのようにしたら以下のエラーが出た

write error: Broken pipe

ただし処理自体は正しくできているようで、エラーが出るだけのよう

bashで同じように実行しても特にエラーは出ない ググってみるとこんなのがヒット https://stackoverflow.com/questions/11296809/how-to-avoid-ls-write-error-broken-pipe-with-php-exec どうやらpopenで開いたlsの出力を読み取らずに閉じることで同じエラーが出るとのこと

また、こんなページも http://qiita.com/kkdd/items/f9829af2fbb9c3c980da phpやlsに関係なく出力が長い場合にBloken pipeのエラーは出るよう

lsの出力を読み取りきらずにheadの処理が終わってしまった場合に、lsの出力先がなくなってこのようなエラーが出るものと推測される。私の環境だとbashでは出ないが、それはシグナルの処理をうまくやってくれているとかなのか。phpだとそのあたりの処理を途中で拾って何かやってるためにエラーになってしまうとか。

とりあえず2>/dev/nullをls側につけることでエラーは握りつぶせるかつ処理は正常に行われているのでよしとする。