Php ZipArchive::getFromName找不到文件名

Php ZipArchive::getFromName找不到文件名,php,zip,ziparchive,Php,Zip,Ziparchive,知道我做错了什么吗?它总是随着“再见”而死去。zip归档文件中有一个index.php文件 $zip = new ZipArchive; $zip->open($source); $test = $zip->getFromName('index.php'); if(!$test) { die('bye bye'); } else { die($test); } 那么,你应该做的第一件事是确保你已经打开了它,因为它也可能失败: $zip = new ZipArchiv

知道我做错了什么吗?它总是随着“再见”而死去。zip归档文件中有一个index.php文件

$zip = new ZipArchive;
$zip->open($source);
$test = $zip->getFromName('index.php');
if(!$test) {
    die('bye bye');
} else {
    die($test);
}
那么,你应该做的第一件事是确保你已经打开了它,因为它也可能失败:

$zip = new ZipArchive;
$rc = $zip->open($source);
if ($rc === TRUE) {
    $test = $zip->getFromName('index.php');
    $zip->close();
    if(!$test) {
        die('bye bye');
    } else {
        die($test);
    }
} else {
    die("could not open: " . $rc);
}
除此之外,请确保您完全确定您的文件规范是正确的。如有必要,您可以使用
getNameIndex
一次枚举一个条目,并在过程中打印出它们的名称,例如:

$zippy = new ZipArchive();
$zippy->open($source);
for ($i = 0; $i < $zippy->numFiles; $i++) {
    echo $zippy->getNameIndex($i) . '<br />';
}
$zippy->close();
$zippy=new ZipArchive();
$zippy->open($source);
对于($i=0;$i<$zippy->numFiles;$i++){
echo$zippy->getNameIndex($i)。“
”; } $zippy->close();

我假设我告诉您检查
$source
的值是在浪费时间。您可能需要检查一下,以防万一。

这是不是与上一个问题相同的zip文件,其中所有内容都包含在
example/
子目录中?验证指令$zip->open($source)是否返回TRUE。如果失败,那么您在打开归档文件时会遇到问题,因此可以肯定getFromName也会失败!就是用getNameIndex做的。我发现我是个白痴。我准备的zip文件中有文件夹结构,因为我忘了选择所有单独的文件并将它们压缩在一起。所以我需要使用$zip->getFromName(“example/index.php”);现在我已经正确地压缩了文件。这花了我太长时间才解决。关于支票,我在脚本中有,但没有放在这里,对不起。很高兴认识任何遇到这个问题的人。我的档案似乎使用了反斜杠。文件夹\文件.csv。多亏了你的第二个代码块,我才明白这一点。非常感谢。