Linux命令从php脚本输出填充文件


Linux command populate file from php script output

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

所以,我想知道是否有一种方法可以将我的PHP脚本的输出管道到Linux触摸命令中,以便我的PHP输出填充或覆盖服务器上的文件?

我正在尝试下面的代码,但没有成功:

touch test | php xml_reports.php

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

php filename.php

如果你的php文件包含:

<?php
    echo "Hello World";
?>

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

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

假设我正确理解了你的问题,这里有一个解决方案。但是,在本例中,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的文件中拥有整个页面。现在,您需要确定的一件事是,web服务器服务器可以编写output.html文件。这意味着你需要确保Webserver具有在您计划的任何目录中写入的权限将文件存储在。

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