我有一个名为fileGet的函数,它的目的很简单:
但是,当我从另一个函数调用它时,它就停止工作了?
当它从另一个函数(过去非常好地工作)运行时,我被抛出一个没有解压缩文件的空zip。
然后,当程序试图使用不存在的文件时,这会抛出程序中的错误。
任何帮助都将不胜感激。
编辑:目录结构如下:
MainFolder [phpThisCode,jsonzip & json文件]
我希望这能帮到你?
function fileGet(){
$extURL = 'exampleURL';
$path = "../json/AllSets.json.zip";
copy($extURL, $path);
$newZip = new ZipArchive();
if ($newZip->open('../json/AllSets.json.zip') == TRUE) {
$newZip->extractTo('../json/');
$newZip->close();
}
}
function fileArch(){
$today = date("d-m-Y");
if (file_exists('../json/archive/'.$today.'.zip') == FALSE){
$zip = new ZipArchive();
$zip->open('../json/archive/'.$today.'.zip', ZipArchive::CREATE);
$zip->addFile('../json/AllSetsLess.json', 'AllSetsLess.json');
$zip->close();
unlink('../json/AllSets.json');
unlink('../json/AllSets.json.zip');
unlink('../json/AllSetsLess.json');
fileGet();
}
}
function fileCompare(){
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
$extURL = get_headers("exampleURL")[3];
$extURL = (int)preg_replace("/[^0-9]/", '', $extURL);
$intURL = filesize("../json/AllSets.json.zip");
echo('external: '.$extURL.' internal: '.$intURL);
if ($extURL !== $intURL) {
echo('Launching Download');
fileArch();
}
}
fileCompare();我希望在我的json文件夹中有一个zip文件和json文件,但是只需获得一个文件大小为0的zip文件。
编辑:我尝试了几种不同的方法,包括从fileArch()中删除if语句,并使用relative或absolute链接,但是现在我完全困惑了,如果您单独调用它,fileGet()函数可以正常工作,但是当从其他函数中调用它时,它根本无法工作。
Edit2:所以,如果我从fileArch()开始这个程序,那么它运行的很好,我想也许fileCompare()中还有什么东西是可以打开的?但是,我找不到任何未打开的内容,变量都应该是本地的。我知道fileCompare()正在加载fileArch(),因为它可以很好地删除文件,但是在fileCompare()和fileGet()之间似乎存在某种冲突。如果您知道这可能是什么,请告诉我,因为PHP不是我的第一语言。
编辑3:我已经找到了冲突,但不知道为什么冲突。所以问题是密码:
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);在fileCompare()函数中,我需要这段代码来允许服务器从我记得的内容中检查另一个服务器的头,所以有人能告诉我为什么会导致冲突吗?
发布于 2019-04-27 20:52:34
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);这就是导致问题的代码,也许是因为get请求被转换为头请求而干扰了复制请求?我从PHP手册这里中获得了代码,所以如果其他人在复制请求方面有问题,那么检查您是否已经更改了stream_context。我将阅读stream_context应该如何使用,并在这里写回当我有更重要的东西。
https://stackoverflow.com/questions/55882074
复制相似问题