如何运行PHP文件并归档输出?

时间:2014-05-07 19:45:18

标签: php ziparchive

我有一个PHP文件,其输出我想添加到zip存档(使用PHP' s ZipArchive类)。但是,当我尝试添加它时,它只是给我PHP源代码,未经处理。 如何在将PHP添加到zip之前确保运行和处理PHP?

这是我迄今为止所做的尝试:

<?PHP
$z = $_GET['z']; // something like 'css-js-Type', etc.
$cols = $_GET['cols']; // a number
if (!$z)
{
    header("Location: /husk/get/");
    exit();
}
if ($cols)
    $cols = intval($cols);
else
    $cols = 12;

$zname = 'Husk_' . $z . "_$cols".'col' . '_' . getHuskVersion() . '.zip';
$here = $_SERVER['DOCUMENT_ROOT'] . '/prog/husk';
$filename = "$here/get/$zname";
if (!file_exists ($filename))
{
    $z = explode ('-', $z);

    $zip = new ZipArchive();

    if ($zip->open($filename, ZipArchive::CREATE) !== TRUE)
        exit("cannot open <$filename>\n");

    $_GET['cols'] = $cols;
    if (in_array('css', $z))
        $zip->addFile("$here\\_css\\HuskGen.php", "Husk_$cols.css");
    if (in_array('js', $z))
        $zip->addFile("$here\\_js\\Husk.jQuery.js", 'Husk.jQuery.js');
    if (in_array('Flex', $z))
        $zip->addFile("$here\\_css\\Flex.css", 'Flex.css');
    if (in_array('Type', $z))
        $zip->addFile("$here\\_css\\Type.css", 'Type.css');
    if (in_array('Print', $z))
        $zip->addFile("$here\\_css\\Print.css", 'Print.css');

    echo "numfiles: " . $zip->numFiles . "\n";
    echo "status:" . $zip->status . "\n";
    $zip->close();
}

header("Location: /husk/get/$zname");
?>

1 个答案:

答案 0 :(得分:1)

文件是文件。 &#34;扩展&#34;阅读时没关系。

如果您需要PHP脚本解释,您必须自己执行此操作( em> PHP脚本):

 ob_start();
 require "myscript.php";
 $contents = ob_get_clean();

然后,$contents可以添加到ZIP文件中。

然而,这种方法很幼稚,因为它依赖于所需的PHP脚本来干净地执行并将所有必需的输出传递给STDOUT。哪些PHP脚本要做。

根据您的php.ini(或其他设置),执行脚本时出现的警告,错误或其他不适合公开发布的内容包含在您的ZIP存档中好。