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中没有拾取不存在的驱动器的问题。