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側につけることでエラーは握りつぶせるかつ処理は正常に行われているのでよしとする。