私は次のようにWindowsでPHPシステム関数を使用しています:
system("mysql --user=root --password=xxxx --host=127.0.0.1 --verbose <create.sql > out.txt 2>&1", $retVal);
ただし、エラーメッセージはファイルの先頭に表示されます。エラーのあるSQLの適切な行の後にエラーメッセージを表示することは可能ですか?
問題は、stdoutがバッファリングされ、stderrが、この場合にエラーが常に最初に表示されることを意味していないことです。ある種の順序を保持したい場合は、システムコールをスクリプトでラップし、後でソートする必要があります。ここにいくつかの説明があります。