あなたが提供した情報に基づいて、私はあなたがやりたいことの回避策を持っています。まず、「>」を使用してダンプの出力をパイプする代わりに、同じジョブを実行する代わりに--file=some_file.sqlフラグを使用する必要があります。
さて、stderrをstdoutに送信しても、passthru呼び出しからの$ outputが出力をキャプチャするようには見えないので、これが機能します。--file =フラグを使用してコマンドを変更し、コマンドの出力(エラーを含む)をログファイルにパイプします。また、stderrをstdoutに送信します(コマンドの後に2>&1を実行します)。エラーをキャプチャします。
コードは次のとおりです。
// notice the file= flag and the piping of error to the file
$command=
"/usr/bin/pg_dump --a --no-owner --no-acl --attribute-inserts ".
"--disable-dollar-quoting --no-tablespaces ".
"--file={$path['schema_path']}schema-{$latest_update}.sql ".
"--host={$db['hostname']} --user={$db['username']} ".
"--password --port={$db['port']} {$db['database']} > pg_dump_error.log 2>&1";
// no output to capture so no need to store it
passthru($command);
// read the file, if empty all's well
$error = file_get_contents('pg_dump_error.log');
if(trim($error) != '')
exit("PG_DUMP ERRROR:\n-----\n$error\n");
これが多かれ少なかれあなたが探していたものであることを願っています。