我的计划是创建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>