2012-12-31 214 views
0

我試圖在我的Linux服務器上通過PHP創建包含XML輸出的文件。Drupal 7模塊shell_exec問題

我使用下面的代碼行:

print "CHECKING: " . shell_exec("echo {$output} > tested.xml"); 

的$輸出變量包含格式化以及XML,我試圖動態地創建tested.xml和填充...但它不工作。

修訂:

我只是嘗試以下方法:

print "CHECKING: " . shell_exec("echo {$output} > /var/www/mysite/sites/all/modules/my_module/output/tested.xml"); 

我然後給了輸出目錄完整777個權限,但我的XML文件還沒有生成。

+1

使用['escapeshellarg($ output)'](http://us.php.net/escapeshellarg)。爲什麼你使用shell exec來完成通過普通的PHP函數完成的任務? – DCoder

回答

1

提供的代碼中缺少的唯一東西是在shell_exec命令中指定的重定向中的絕對路徑名稱。假設OS用戶的Web服務器正在運行(例如,'apache')具有對目標目錄的寫入權限,則輸出將被寫入IO重定向中指定的文件。

例如,爲了寫XML文件到/ tmp,使用下面的代碼的輸出:

print "CHECKING: " . shell_exec("echo {$output} > /tmp/tested.xml"); 

修訂:

而不是提供我自己我的答案決定建立對你的好工作:-) 你的建議曾與完整的XML標籤有以下略作調整代碼:

print "CHECKING: " . shell_exec("echo '{$output}' > /tmp/tested.xml"); 

ps:而且你也完全正確的認爲apache允許的目錄的完整路徑將在其中被創建,這是絕對必要的。

+0

謝謝你的回答。我只是嘗試了你的方法,但它沒有奏效。我更新了我的問題,上面提供了我所做的更改 – sisko

+0

「格式良好的XML」本身會包含大量的「<' and '>」。 – DCoder

+0

你是對的!我嘗試'輸出'而不是$輸出,並創建了我的tested.xml文件。但是現在,我怎樣才能得到< and >標籤問題處理,所以我的XML輸出工作? – sisko