0

初步大纲

我正在使用 php 为我正在处理的项目编写自定义文件服务工具。到目前为止,该工具运行良好,但我在提供 php 文件时遇到了一个奇怪的情况。

我的初始文件 server.php 旨在接受文件请求并为文件提供正确的标题和缓存控制等。

Server.php 使用文件命令来获取平面文件(如图像)的内容,并为它们提供回显打印样式。

Server.php 当前使用包含(带有输出缓冲)来获取要服务的 php 文件的内容。在包含文件包含 die 命令之前,此方法运行良好。

我已经尝试使用 return 而不是 die 来终止进程。但是,如果包含的文件包含更多文件,则它无法执行 die 的工作。


所以简而言之,我有一个 PHP 文件“server.php”,其中包括另一个 php 文件。我想得到它的处理输出,就好像它是一个独立的平面文件一样。我不关心被移动到全局范围的变量,我只想要输出。有任何想法吗?

多谢你们


编辑

服务器.php

<?php
echo 'File start'."<br>\n";
        ob_start();
        include("file.php");
echo    ob_get_clean();
echo 'File end'."<br>\n";
?>

文件.php

<?php
echo 'I am expecting to get this data.'."<br>\n";
die;
echo 'I am not expecting to get this data.'."<br>\n";
?>

我希望得到一个大致看起来像的结果。

文件开始
我希望得到这些数据。
文件结束

我得到的是一个看起来像的结果。

文件开始
我希望得到这些数据。

如果我使用 return 而不是 die,我会得到预期的结果。但这并不能阻止人们使用 die 并破坏我的程序。希望我的编辑能更好地解释问题。再次干杯,伙计们。

4

2 回答 2

0

使用include将运行当前进程中的其他文件。要在另一个进程中运行它们,您可以使用exec、 或proc_*函数,或者可能使用分叉。

选择使用哪一个完全取决于您的要求。

编辑

要使用该函数运行 php 脚本exec,请尝试以下方法;

exec("php $absolutePathToScript", $output, $result);

if ($result !== 0) { //the script did not throw an error
    print_r($output) // will show the output of the command
}
于 2013-06-05T10:42:13.230 回答
0

只需使用file_get_contents()来获取 PHP 文件的内容,因为 include 和 require 将从包含的文件中执行 PHP 代码

于 2013-06-05T10:46:08.063 回答