0
私のfilemanagerスクリプトは、これまでのところうまく機能しています。拡張子を持たないファイルを処理する方法を知らず、プログラム内のすべてのファイルとそのサイズを表示しようとするとエラーをスローします。PHP - 拡張子を持たないファイルのファイルサイズを読み取ることができません。
ファイルを取得して適切な配列に追加するための呼び出しです。
$errors = array();
$items = array();
$folders = array();
$files = array();
$dir = $base_dir;
if(is_dir($dir)) {
if($dh = opendir($dir)) {
while(($file = readdir($dh)) !== false) {
if($file == "." || $file == "..") {
continue;
} else {
$filesize = filesize($dir . "/" . $file);
$filesize = $x10->function->realFileSize($filesize);
$items[] = array(
'name' => $file,
'size' => $filesize,
'ext' => substr($file, strrpos($file, "."))
);
}
}
closedir($dh);
}
for($i = 0; $i < count($items); ++$i) {
$filename = $items[$i]['name'];
$extension = $items[$i]['ext'];
if($extension == $filename) {
if($filename == ".htaccess" || $filename == "magic") {
$files[] = $items[$i];
} else {
$folders[] = $items[$i];
}
} else {
$files[] = $items[$i];
}
}
} else {
$errors[] = "1";
}
そして、私はこのエラーメッセージを取得しています:
Fatal error: Uncaught UnexpectedValueException: RecursiveDirectoryIterator::__construct(C:\apache\error\README,C:\apache\error\README): The directory name is invalid. (code: 267) in C:\panel\htdocs\core\functions.php:318 Stack trace: #0 C:\panel\htdocs\core\functions.php(318): RecursiveDirectoryIterator->__construct('C:\\apache\\error...', 4096) #1 C:\panel\htdocs\filemanager.php(229): Functions->GetDirectorySize('C:\\apache\\error...') #2 {main} thrown in C:\panel\htdocs\core\functions.php on line 318
これは私が道を見つけることができないファイル
function GetDirectorySize($path) {
$bytestotal = 0;
$path = realpath($path);
if($path !== false && $path != '' && file_exists($path)) {
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
$bytestotal += $object->getSize();
}
}
return $bytestotal;
}
のrealFileSizeを見つけるために参照されている機能ですファイルREADME
には拡張子はありませんが、ディレクトリには3KBのサイズがあるため、この例外を処理します。これらのファイルをスキップするか、正しくロードする別の方法はありますか?私はここで私の知恵の終わりです。
を私は 'それに' {}キャッチ(にUnexpectedValueExceptionます$ e)の{}試みる使用しようと、私はまだ '致命的なエラーを取得:キャッチされないにUnexpectedValueException:RecursiveDirectoryIterator :: __構築物(Cをあなたが書いたこのコードが使用します:\ apache \ error \ READ ... 'エラーメッセージ – Kaboom
編集時にtry catchを移動しようとしていますあなたの 'ext' => substr($ file、strrpos($ file、 "。"))をこれに変更してください: 'ext' => substr($ file、((strrpos($ file、 "。")> = 0)? strrpos($ file、 "。"):0) –
オブジェクト呼び出しの前にtryとcatchを追加するとyesになりますが、ファイルサイズは指定されていません。ファイルをソートします。 – Kaboom