我有一個PHP腳本,它會生成一些複雜的XML輸出。 XML當前正在輸出爲網頁,而不是網頁,我需要它作爲我的服務器上的物理文件。Linux命令從php腳本輸出填充文件
因此,我想知道是否有辦法將我的PHP腳本的輸出流入Linux touch命令,以便我的PHP輸出填充或覆蓋服務器上的文件?
目前我正在試圖將下面的代碼沒有成功:
touch test | php xml_reports.php
我有一個PHP腳本,它會生成一些複雜的XML輸出。 XML當前正在輸出爲網頁,而不是網頁,我需要它作爲我的服務器上的物理文件。Linux命令從php腳本輸出填充文件
因此,我想知道是否有辦法將我的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);
而且,咣噹,您應該將整個頁面放在名爲output.html的文件中。 現在,你需要確定的一件事是,網絡服務器服務器可以 寫文件output.html。也就是說,您需要確保 網絡服務器有權限寫入您計劃存儲該文件的任何目錄 。
它是如何工作的?基本上,它只是緩衝你的 腳本的所有輸出。然後,將該緩衝區存儲到一個字符串中。然後你發送 緩衝區到瀏覽器。然後你存儲在一個文件中的字符串...
PHP xml_reports.php>測試 –