このコマンドにファイルの代わりにファイルストリームを送信するにはどうすればよいですか?
/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q $SOURCEFILE $OUTPUTFILE
ファイルストリームはPHPの文字列から来ます。
答え1
/dev/stdin
PHPを使用してこれを行うことができるはずです。proc_open()。次のコマンドを使用してプロセスを開始します。
wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE
そして変数のHTMLを実行中のプロセスにパイプします。
答え2
パイプから読み取った名前でファイルを開くプログラムを作成するには、特別なデバイス名を指定します/dev/stdin
。たとえば、次のようになります。
/usr/local/bin/program-to-output-the-html | /usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE
または、表示されるコマンドの前にこれを行います。
SOURCEFILE=/dev/stdin
そうすることで、プログラムはopen("/dev/stdin",...)
これを防ぐための論理的な意図がない限りそうします。
答え3
コメントを見ると、一時ファイルを使用してこれを行うことができるようです。名前付きパイプを作ってみてはいかがでしょうか?
mknod magritte p
PHPコードからMagritteに書き込むだけです。
wkhtmltopdfを実行する必要があります。
/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q magritte $OUTPUTFILE
より正確に位置を指定できます。
まだ推測中です。 wkhtmltopdfはPHPで動作しますか?
その場合は、バックグラウンドプロセスとして実行する必要があります。PHP実行機能
exec はパイプに書き込む前に呼び出されます。
答え4
だから正しい使い方はプロセスの交換。
wkhtmltopdf --title "$SUBJECT" -q <(command_with_output_stream) $OUTPUTFILE