php filemtime возвращает false, кроме корневого каталога приложения php - PullRequest
0 голосов
/ 01 февраля 2012

Я занимаюсь разработкой php-приложения с использованием Ubuntu 11.10 в среде разработки.У меня есть каталог '/ usr / src / app_name /', который содержит некоторые файлы PDF.Мне нужно получить имена файлов вместе с временем их последнего изменения.

Ниже приведен фрагмент кода:

foreach (new DirectoryIterator('/usr/src/app_name') as $file) {
    if($file->isDot()) continue;
      print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>';
}

Я правильно понимаю имена файлов, но выдает: PHP Предупреждение: filemtime(): сбой статистики .... и я получаю время 1 января 1970 года.

Но, если я перехожу в корневой каталог приложения, т. е.

foreach (new DirectoryIterator('/var/www/app_name') as $file) {
  if($file->isDot()) continue;
    print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>';
 }

, я получаю всеимена php-файлов приложения и время их последнего изменения.

Любая помощь по этому вопросу будет высоко ценится .... Заранее спасибо.

1 Ответ

1 голос
/ 01 февраля 2012

Я знаю, что уже сказал это в комментарии, но в то время я не мог знать, была ли это проблема или нет.Итак, вот полное объяснение.

Использование filemtime($file->getRealPath()) может помочь решить проблему, поскольку в комментарии к документу filemtime упоминается, что вам нужно указать абсолютных путей до filemtime.Теперь использование результата итератора напрямую (ваша переменная $file), вероятно, вызовет DirectoryIterator::__toString, который возвращает только имя файла, а не абсолютный путь.

Это могло бы сработать для /var/www, потому что это был рабочий каталог, но я не уверен.

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