複雑な XML 出力を生成する PHP スクリプトがあります。XML は現在 Web ページとして出力されていますが、Web ページではなく、サーバー上の物理ファイルとして必要です。
では、PHP スクリプトの出力を Linux の touch コマンドにパイプして、PHP の出力がサーバー上のファイルに入力または上書きされるようにする方法はあるのでしょうか?
私は現在、成功せずに次のコードを試しています:
touch test | php xml_reports.php
複雑な XML 出力を生成する PHP スクリプトがあります。XML は現在 Web ページとして出力されていますが、Web ページではなく、サーバー上の物理ファイルとして必要です。
では、PHP スクリプトの出力を Linux の touch コマンドにパイプして、PHP の出力がサーバー上のファイルに入力または上書きされるようにする方法はあるのでしょうか?
私は現在、成功せずに次のコードを試しています:
touch test | php xml_reports.php
実際には、コマンド ラインから PHP を実行できます。
php filename.php
したがって、php ファイルが以下で構成されている場合:
<?php
echo "Hello World";
?>
出力は、ターミナルで "Hello World" (引用符なし) になります。そのため、PHP でアプリケーションを作成している場合は、ブラウザーが出力をレンダリングすることなくアプリケーションにアプローチする方法を考えてみてください。それが役立つことを願っています。
[編集] また、shell_exec を調べることもできます。(http://php.net/manual/en/function.shell-exec.php)
あなたの質問を正しく理解していると仮定すると、ここに解決策があります。ただし、この場合、PHP 出力をパイプするのではなく、PHP コード自体がサーバー上のファイルのコピーを出力します。これがLinuxパイプを介して行われることがどれほど重要かはわかりません。また、このソリューションはhttp://forums.codewalkers.com/showpost.php?p=40350&postcount=3からコピーされていることにも注意してください。
1)スクリプトの最初に次の行を追加します:
ob_start();
2) スクリプトの最後に、次のように記述します。
$page = ob_get_contents(); ob_end_flush(); $fp = fopen("output.html","w"); fwrite($fp,$page); fclose($fp);
そして、bam、output.html というファイルにページ全体が含まれている必要があります。ここで、確認する必要があることの 1 つは、Web サーバー サーバーがファイル output.html を書き込めることです。つまり、そのファイルを保存する予定のディレクトリに書き込む権限が Web サーバーにあることを確認する必要があります。
それはどのように機能しますか?基本的に、スクリプトからのすべての出力をバッファするだけです。次に、そのバッファーを文字列に格納します。次に、バッファをブラウザに送信します。次に、その文字列をファイルに保存します...