PHP 5.3.1 glob: // исключение - PullRequest
       19

PHP 5.3.1 glob: // исключение

2 голосов
/ 17 февраля 2010

У меня проблемы с упаковщиком потока glob: //, включенным в версию PHP 5.3.0 . Я использую следующую версию PHP:

PHP 5.3.1-0.dotdeb.1 с Suhosin-Patch (cli) (построен: 5 декабря 2009 20:08:29) Copyright (c) 1997-2009 PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Технологии

Когда я пытаюсь выполнить следующий пример с веб-сайта PHP.net:

<?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);
}
?>

Обратите внимание, что я удалил папку из исходного примера и оставил только расширение php

Я получаю сообщение об ошибке PHP со следующим сообщением:

SplFileInfo :: getSize (): сбой статистики для [имя первого php-файла] .php

При поиске в Google по поводу этой ошибки я обнаружил, что у кого-то была такая же проблема год назад, но, похоже, они ее исправили.

Итак ... Мой вопрос: кто-нибудь использует glob: // wrapper? Я делаю что-то неправильно? Кто-нибудь с такой же проблемой?

Примечание: я уже знаю, что могу сделать то же самое другими способами, но я хочу проверить glob: // stream wrapper:)

Ответы [ 3 ]

2 голосов
/ 18 февраля 2010

Я отправил эту ошибку в PHP Ошибки, они подтверждают, что это текущая ошибка PHP 5.3.1.

Они пытаются это исправить; см. Отчет об ошибке # 51068 .

Спасибо всем за ответы :) 1007 *

2 голосов
/ 17 февраля 2010

Сообщение об ошибке довольно ясно.Он ищет "/00.php" (обратите внимание на косую черту) в корневом каталоге.Я думаю, вам нужно getPathName здесь (http://www.php.net/manual/en/directoryiterator.getpathname.php) не getFileName

0 голосов
/ 17 февраля 2010

Я обнаружил проблему: glob: // похоже, принимает только полные или относительные пути, но не текущий путь.

Например, для извлечения текущего пути мне нужно использовать:

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

Но я не могу использовать запрос glob: // * для получения всех текущих файлов и папок.

Однако я могу сделать поиск подпапок, используя относительные пути:

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

Надеюсь, это поможет любому, кто пытается что-то сделать с помощью этой новой оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...