2012-12-29 65 views
0

我有一個PHP腳本,它會生成一些複雜的XML輸出。 XML當前正在輸出爲網頁,而不是網頁,我需要它作爲我的服務器上的物理文件。Linux命令從php腳本輸出填充文件

因此,我想知道是否有辦法將我的PHP腳本的輸出流入Linux touch命令,以便我的PHP輸出填充或覆蓋服務器上的文件?

目前我正在試圖將下面的代碼沒有成功:

touch test | php xml_reports.php 
+0

PHP xml_reports.php>測試 –

回答

2

實際上,你可以在命令行運行PHP。

php filename.php 

所以,如果你的PHP文件包括了:

<?php 
    echo "Hello World"; 
?> 

輸出將是 「Hello World」 的(不帶引號)在終端。因此,如果您使用PHP編寫應用程序,請嘗試並考慮如何在瀏覽器不顯示輸出的情況下處理它。我希望有所幫助。

你可能也想看看shell_exec。 (http://php.net/manual/en/function.shell-exec.php)

0

假設我正確理解你的問題,這裏是一個解決方案。然而,在這種情況下,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。也就是說,您需要確保 網絡服務器有權限寫入您計劃存儲該文件的任何目錄 。

它是如何工作的?基本上,它只是緩衝你的 腳本的所有輸出。然後,將該緩衝區存儲到一個字符串中。然後你發送 緩衝區到瀏覽器。然後你存儲在一個文件中的字符串...

+0

我已經試過許多方法,從我的PHP腳本創建的輸出,但我得到許可被拒絕錯誤。因此,我決定處理來自服務器命令行的文件創建。但是,我會嘗試你的方法 – sisko

+0

嗨邁克爾,正如我懷疑的,當我嘗試你的方法時,我得到了一個許可被拒絕的錯誤。我相信你的建議有好處,但是在Linux服務器上的Drupal模塊中嘗試它並不會讓它無阻礙地工作 – sisko

+0

這很不幸 - 你能否讓Alex的方法工作?這將是我的下一個建議。 –

相關問題