我有一个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具有在您计划的任何目录中写入的权限将文件存储在。
它是如何工作的?基本上,它只是缓冲所有的输出脚本。然后,将该缓冲区存储到字符串中。然后你发送缓冲区到浏览器。然后将该字符串存储在文件中…