2012-12-31 65 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