PHP glob :/ / istisna 5.3.1

3 Cevap php

Ben :/ / akım sarmalayıcı PHP 5.3.0 sürümünde bulunan topak ile sorun yaşıyorum. Ben aşağıdaki PHP sürümünü kullanıyorum:

PHP 5.3.1-0.dotdeb.1 with Suhosin-Patch (cli) (built: Dec 5 2009 20:08:29) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Ben example PHP.net web sitesinden aşağıdaki yürütmek çalıştığınızda:

<?php
// Loop over all *.php files in ext/spl/examples/ directory
// and print the filename and its size
$it = new DirectoryIterator("glob://*.php");
foreach($it as $f) {
    printf("%s: %.1FK\n", $f->getFilename(), $f->getSize()/1024);
}
?>

Ben orijinal örnek klasörünü kaldırmak ve sadece php uzantısı sol unutmayın

Ben şu mesajı ile bir PHP hatası alıyorum:

SplFileInfo :: getSize ():. Istatistik [ilk php dosya adı] için başarısız oldu php

Bu hata hakkında Google'da arama yaparken birisi same problem, bir yıl önce vardı, ama onlar sabit gibi görünüyor olduğunu keşfedeceksiniz.

Yani ... Benim soru: Herkes glob :/ / sarıcı kullanıyor? Ben yanlış bir şey yapıyorum? Aynı sorunu olan herkes?

Not: Ben zaten diğer farklı şekillerde aynı şeyi biliyorum ama ben topak :/ / akım sarmalayıcı test etmek istiyorum :)

3 Cevap

Ben bunu bir geçerli PHP 5.3.1 böcek onaylamak PHP Bugs bu hatayı gönderdi.

Onlar bunu düzeltmek için çalışıyoruz; bkz Bug report #51068.

Cevaplarınız için hepinize teşekkür ederim :)

Hata mesajı oldukça açıktır. Bu kök dizininde "/ 00.php" (eğik çizgi unutmayın) arıyor. Ben (http://www.php.net/manual/en/directoryiterator.getpathname.php) burada GetPathName gerekmez sanırım getFileName

Ben sorun keşfetmek: Sadece akım yolu tam yolları veya göreli yolları kabul değil, gibi :/ / görünüyor glob.

Örneğin, ben kullanmak gerekir geçerli yolu alınamadı:

$it = new DirectoryIterator("glob:///home/pedro/public_html/*");
foreach($it as $f) {
    printf("%s: %.1FK<br />", $f->getFilename(), $f->getSize()/1024);
}

Ama tüm geçerli klasör dosya ve klasörleri almak için topak :/ / * sorgu kullanamazsınız.

Ancak ben göreli yollar kullanarak alt klasörleri arama yapabilirsiniz:

$it = new DirectoryIterator("glob://subfolder/*");
foreach($it as $f) {
    printf("%s: %.1FK<br />", $f->getFilename(), $f->getSize()/1024);
}

Ben bu yeni sarıcı ile bir şeyler yapmak isteyenlere yardımcı olur umarım.