2015-09-24 27 views
-1

我想檢查$outZipPath是否是有效的。當我有一個不正確的驅動器,如:用ZIPARCHIVE檢查錯誤::創建

$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'; 
+0

我可以看到一個不存在的路徑,但在那裏您的腳本可能會選擇一個不存在的驅動器嗎?您可以使用'is_dir()'來檢查路徑是否存在。 – Rasclatt

+0

要檢查一個驅動器,你可以像''echo(@disk_total_space(「:k」))那樣來抑制來自'disk_total_space()'的警告。 '是驅動器':'不是驅動器';'我不知道這是否是一個很大的開銷,但是php手冊沒有提到這個函數的性能。 – Rasclatt

+0

is_dir()確實允許檢查驅動器。它引發了一個問題,那就是if($ open === true)條件有什麼意義。 $ z-> open()打開/創建路徑,如果它不能這樣做,它如何不能給出錯誤消息? – havelly

回答

0

您可以使用觸摸功能,試圖創建一個文件。在函數名稱前放置@可防止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; 
+0

謝謝你。它並沒有解決問題,但爲什麼if條件似乎沒有在$ outZipPath中拾取一個不存在的驅動器。 – havelly