0

我有一个 PHP 脚本,它生成一些复杂的 XML 输出。XML 当前作为网页输出,但我需要将它作为服务器上的物理文件而不是网页。

所以,我想知道是否有办法将我的 PHP 脚本的输出通过管道传输到 Linux touch 命令中,以便我的 PHP 输出填充或覆盖我服务器上的文件?

我目前正在尝试以下代码但没有成功:

touch test | php xml_reports.php
4

2 回答 2

2

您实际上可以从命令行运行 PHP。

php filename.php

因此,如果您的 php 文件包含以下内容:

<?php
    echo "Hello World";
?>

终端中的输出将是“Hello World”(不带引号)。因此,如果您正在使用 PHP 编写应用程序,请尝试考虑如何在没有浏览器呈现输出的情况下处理它。我希望这会有所帮助。

[编辑] 您可能还想查看 shell_exec。(http://php.net/manual/en/function.shell-exec.php)

于 2012-12-29T06:43:58.763 回答
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);

而且,bam,您应该将整个页面放在一个名为 output.html 的文件中。现在,您需要确定的一件事是网络服务器服务器可以编写文件 output.html。这意味着您需要确保网络服务器有权写入您计划存储该文件的任何目录。

它是如何工作的?基本上,它只是缓冲脚本的所有输出。然后,将该缓冲区存储到一个字符串中。然后将缓冲区发送到浏览器。然后你将该字符串存储在一个文件中......

于 2012-12-29T06:49:24.050 回答