使用curl将php文件的输出保存到服务器上的新文件中

时间:2014-04-27 00:37:34

标签: php session curl

我的计划是创建php'模板'文件,该文件将根据需要为网站用户创建各种报告。我想要做的是获取php文件的输出并将其保存为服务器上的新文件。卷曲和文件创建有效,但是......

问题和疑问:

  • 使用curl时,我无法再访问为登录用户设置的任何$ _SESSION变量。我需要能够在output.php文件中访问这些变量以实际创建正确的内容我想要在文件中。有没有办法传递/允许访问$ _SESSION变量?如果没有,有没有办法可以发布数据和卷曲...比如在这些行上张贴用户ID或其他东西?

  • 对mkdir使用recursive = true时是否需要模式?

  • 最后......我最初的计划是将这些“模板”文件存储在public_html目录之外,这样就无法直接访问这些文件...只能通过我的脚本,尽管看起来curl只能保存给出url时输出php文件。话虽如此,看来文件必须可以通过网络访问。有没有办法给curl一个文件路径,比如'/home/test/template/output.php,然后仍然处理文件并保存它的实际输出?

我准备工作EXCEPT file_get_contents,因为我已经禁用了fopen。在这种情况下使用output_buffer会更好吗?

示例调用以创建报告:

get_archive('http://www.test.com/template/output.php', '/home/test/public_html/reports/', 'newreport.html');

function get_archive($file, $local_path, $newfilename) 
{ 
    // if location does not exist create it
    if(!file_exists($local_path)) 
    {
        mkdir($local_path, 0755, true);
    }

    $out = fopen($local_path.$newfilename,"wb");
    if ($out == false){ 
      exit; 
    }

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_URL, $file);
    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_exec($ch);

    curl_close($ch);

}

简单示例模板文件(output.php):这显然会更广泛,但您应该明白这一点。

<?php

// These files can be included only if INCLUDE_CHECK is defined
require '/home/test/public_html/custom/functions/connect.php';
require '/home/test/public_html/custom/functions/functions.php';
require '/home/test/public_html/custom/functions/session.php';

?>


<!DOCTYPE html>
<html>
<head></head>

<body>

    <div class="row">
        <div class="col-md-12">                                                         
                <?php

                    //create report contents
                                    echo $_SESSION['user']['account_id']; // returns nothing    

                ?>

        </div>
    </div>


</body>
</html>

0 个答案:

没有答案