Php 使用ZIPARCHIVE::CREATE检查时出错

Php 使用ZIPARCHIVE::CREATE检查时出错,php,ziparchive,Php,Ziparchive,我想检查$outZipPath是否有效。当我的驱动器不正确时,例如: $outZipPath = 'k:/backup.zip' // k drive does not exist $opened仍然为真,因此“路径已创建”始终会被回显 如何检查不正确的驱动器/路径 代码如下所示: $z = new ZipArchive(); $opened = $z->open($outZipPath, ZIPARCHIVE::CREATE); if ($opened === true)

我想检查
$outZipPath
是否有效。当我的驱动器不正确时,例如:

$outZipPath = 'k:/backup.zip'     // k drive does not exist
$opened
仍然为真,因此“路径已创建”始终会被回显

如何检查不正确的驱动器/路径

代码如下所示:

$z = new ZipArchive(); 
$opened = $z->open($outZipPath, ZIPARCHIVE::CREATE); 
if ($opened === true) 
    echo 'Path created';
else
    echo 'Not valid path';

您可以使用触摸功能创建文件。将@放在函数名前面可以防止PHP报告错误

<?php
$outZipPath = 'test/this';
$t = @touch($outZipPath);
if ($t === true) {
        $z = new ZipArchive();
        $opened = $z->open($outZipPath, ZipArchive::CREATE|ZipArchive::CHECKCONS);
        if ($opened === true)
            echo 'Path created';
        else
            echo 'Not valid path';
} else {
        echo 'No luck';
}
echo PHP_EOL;

我可以看到一个不存在的路径,但是否存在脚本可以选择不存在的驱动器的实例?您可以使用
is\u dir()
检查路径是否存在。要检查驱动器,您可以抑制来自
disk\u total\u space()
的警告,例如:
echo(@disk\u total\u space(:k”)?'是驱动器':'不是驱动器'我不知道这是否是一个很大的开销,但是php手册并没有提到这个函数的性能。is_dir()允许检查驱动器。它回避了一个问题,即使用if($opened==true)条件的意义何在$z->open()打开/创建路径,如果不能,它怎么能不发出错误消息呢?它将尝试在脚本所在的同一文件夹中创建一个新的存档,仅在名为
:k
的文件夹中。如果您
print\u r($z)
你可以看到它试图做什么,以及为什么你得到
true
返回。我还应该提到,我使用的是linux,所以在你的系统中可能不是这样,但是看看打印
$z
会给你带来什么。谢谢。但它并不能解决为什么if条件在$outZipPath中没有拾取不存在的驱动器的问题。