【问题标题】:Drupal 7 module shell_exec issueDrupal 7 模块 shell_exec 问题
【发布时间】:2012-12-15 15:51:34
【问题描述】:

我正在尝试在我的 Linux 服务器上创建一个包含通过 PHP 输出的 XML 的文件。

我正在使用以下代码行:

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

$output 变量包含格式良好的 XML,我正在尝试动态创建 test.xml 并填充它...但它不起作用。

修改:

我刚刚尝试了以下方法:

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

然后我给了输出目录完整的 777 权限,但我的 XML 文件仍然没有被创建。

【问题讨论】:

  • 使用 escapeshellarg($output) 。你为什么要使用 shell exec 来完成可以通过普通 PHP 函数完成的事情?

标签: php linux command-line drupal-7 shell-exec


【解决方案1】:

提供的代码中唯一缺少的是在 shell_exec 命令中指定的重定向中的绝对路径指定。假设运行 Web 服务器的 OS 用户(例如,'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 允许的目录的完整路径是绝对必要的。

【讨论】:

  • 感谢您的回答。我刚试过你的方法,但没有奏效。我用我所做的更改更新了我上面的问题
  • “格式良好的 XML”本身将包含大量 <>
  • 你是对的!我尝试了“输出”而不是 $output 并创建了我的tested.xml 文档。但是现在,如何处理 标记问题,以便我的 XML 输出正常工作???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多