PHP を使用して、Apache サーバーでレガシー スクリプトを実行しています。レガシースクリプトはデバッグデータをSTDERRに書き込み、デバッグ設定に応じてそれをブラックホールまたはSTDOUTにリダイレクトしています。
PHP は次のようになります。
exec('perl -e "print 10; print STDERR 20" 2>&1', $output);
それはXPで確実に機能していました。現在windows7を実行している新しいハードウェアを入手しましたが、このコードに戻ると壊れています。ゼロ出力。return-code 255. 理由がわかりません。
もう一度やり直すことができた唯一の方法は、リダイレクトを削除することでした。ああ、リダイレクトはまだターミナル ボックスで完全に機能します。
ここで、apache-error-log (すべての STDERR 出力がデフォルトで出力される場所) からデバッグ データを取得する必要がありますが、これは不便ですが問題ではありません。
リダイレクトが突然機能しなくなった理由を理解したいだけです(そして、同じ問題に遭遇している他の人を助けるかもしれません)。Apacheは同じです。実際、古いボックスからXAMPPディレクトリをコピーしただけです。バグ?システム制限?OS ポリシーで禁止されていますか?