Php filemtime не работает

filemtime глючит. или я. %)

tony2001

TeaM PHPClub

filemtime глючит. или я. %)

Проблема такая: filemtime, fileowner, fileperms не выдают результат, т.е. выдают пустой результат. НО! не на всех файлах. Т.е. на некоторых в одном каталоге выдают, на некоторых нет.
А я просто беру самый новый файл и пишу вемя его модификации как время модификации всего сайта — ессно, что обидно, что не все файлы «видятся».
вот.
Может тута все Юникс со своими permissions виноват.

сэнкс ин эдванс!
tony2001

php.spb.ru

tony2001

TeaM PHPClub

php.spb.ru

Да. товарищи. приехали. Тяжелый случай.

Пришли, что напишет данная программа.

tony2001

TeaM PHPClub

Нет, ну ты странный человек!
Я же спрашиваю _причины_!

Я про юниксовские допуски — а он про false — я ж не совсем чайник, понятно, что функции именно это выдают.
но ЧЕМ для них отличаются файлы друг от друга, если они создавались типа в один день и одинаково?

if ($x==false) echo ‘false’;
else echo ‘ === > $x

php.spb.ru

А ты еще странне, спрашивая «почему небо желтое» ? ДА ОТКУДА Я ЗНАЮ ? И никто тебе из вопроса «почему небо желтое» причину не найдет. ФАКТЫ нужны. Нет, ну просто смешно завать вопрос. Да кто его знает, что такое придумал, что оно глючит? Сколько раз можно повторять, чтобы приводили текст тестовой программы, которая глючит? Я тебе сказал дать минимум информации (результат ф-ии). ГДЕ ЭТО. Ты даже этого не соизволил сказать. Со странностями _ты_. Короче, пусть c тобой Voodoo разбирается в форуме номер 12, у него крепкие нервы. Потому как ругаться в форуме не принято

Источник

Почему home_url () не работает с filemtime () в WordPress?

Я хотел начать автоматическое изменение версии enqueue, чтобы мне не пришлось менять ее вручную после редактирования файла, поэтому я подумал об использовании filemtime() потянуть время, но по какой-то причине, когда я использую его с site_url() или же home_url это не работает:

Читайте также:  Xerox phaser 6020 настроить wifi

но когда я прохожу

оно работает. Я исследовал и прочитал:

но я не нашел ответа на вопрос, почему filemtime() это работа в WordPress с home_url ?

РЕДАКТИРОВАТЬ:

Дальнейшее тестирование я попробовал:

думая, что это может быть проблемой последовательности, но все еще не работает. Я переместил файл CSS в каталог темы и попытался:

все они до сих пор дают тот же результат, и версия подталкивается к 1.0.0 так что я думаю, что это как-то связано с $bootstrap_file = home_url() . ‘/css/boostrap.css’; просто не уверен что.

В голову мне вернули то, что кажется правильным:

но файл Bootstrap не рендерится.

Решение

Я думаю, что причина в том, что функции файловой системы PHP не уходят из URL, а имеют абсолютные пути к файлам. Поэтому нам нужны и URL, и абсолютный путь к файлу, чтобы мы могли убедиться, что он существует, и получить временную метку файла:

Другие решения

Закрыть — я считаю, что проблема в том, что filemtime нужен ресурс пути к файлу, а вы пытаетесь передать ему веб-URL.

Я бы попробовал что-то вроде использования getcwd() вместо этого указать на файл.

Функция «home_url» выводит домашний URL, который нарушит ваш код. использование get_home_url() вместо этого, потому что эта функция возвращает значение, что означает, что вы можете сохранить его в переменной или вызвать его.

wp_enqueue_style(‘bootstrap-style’, get_home_url() . ‘/css/bootstrap.css’, ‘1.0’ );

РЕДАКТИРОВАНИЕ

PHP filemtime() Функция должна получить URL файлов из корня сервера, но WordPress wp_enqueue_style() функции нужен корневой URL хоста. Следующие изменения в вашем коде могут работать, если ваш CSS все еще находится в корневом каталоге. Если это ваша директория темы, просто измените get_home_url() в get_template_directory_uri() , Если это не сработает, тогда покурите меня, я вернусь на завтрак.

Источник

filemtime — Возвращает время последнего изменения файла

(PHP 4, PHP 5, PHP 7)

filemtime — Возвращает время последнего изменения файла

Описание

Данная функция возвращает время последней записи блоков файла, иначе говоря, изменения содержания файла.

Читайте также:  Как правильно писать неработает или не работает

Список параметров

Возвращаемые значения

Возвращает время последнего изменения указанного файла, или FALSE в случае возникновения ошибки. Время возвращается в формате временной метки Unix, который подходит для передачи в качестве аргумента функции date() .

Примеры

Пример #1 Пример использования функции filemtime()

// Пример вывода: В последний раз файл somefile.txt был изменен: December 29 2002 22:16:23.

$filename = ‘somefile.txt’ ;
if ( file_exists ( $filename )) <
echo «В последний раз файл $filename был изменен: » . date ( «F d Y H:i:s.» , filemtime ( $filename ));
>
?>

Ошибки

В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .

Примечания

Учтите, что обработка времени может отличаться в различных файловых системах.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache() .

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в Поддерживаемые протоколы и обработчики (wrappers).

Смотрите также

  • filectime() — Возвращает время изменения индексного дескриптора файла
  • stat() — Возвращает информацию о файле
  • touch() — Устанавливает время доступа и модификации файла
  • getlastmod() — Определение времени последней модификации страницы

Источник

filemtime() not working in Windows PHP-CLI

I just got PHP-CLI working on my Windows machine so I could create scripts using PHP. However, I’m trying to write a script to cleanup my Firefox downloads folder of files older than X number of days, but I can’t seem to get the filemtime() function working.

Here is the function I wrote:

And upon running this I get the following error for every file:

From the research I’ve done, filemtime() should work in Windows. What am I doing wrong?

1 Answer 1

Warning: filemtime(): stat failed for E:\My Documents\Downloadsphp-5.3.0-nts-Win32-VC9-x86.msi in E:\_scripts\cleanupDownloads\cleanupDownloads.php on line 10

You’re missing a backslash \ between the directory and the filename. Don’t forget to escape it on Windows ( \\ ) or just use the forward slash ( / ) or PHP’s DIRECTORY_SEPARATOR constant.

edit

Not the answer you’re looking for? Browse other questions tagged windows php filemtime or ask your own question.

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.15.40479

Читайте также:  Не работают микрофоны аирподс

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

filemtime(): stat failed for

Пытаюсь получить время последнего изменения html-файлов для скрипта, генерирующего карту сайта.

И постоянно получаю вот такие ошибки для каждого url из проверяемого массива:

В этой 247 строке как раз:

Переменная $str_url — типа string, как и необходимо для функции filemtime(); Сама переменная выводится (проверяла print_r($str_url) )

Подскажите, пожалуйста, в чем ошибка и как ее исправить?

P.S. Уточнила насчет необходимых прав. Ответили, что никие дополнительные права в моем случае не нужны.

Переменная $str_url содержит результат функции strval($url) — строковые значения урлов сайта вида: /var/www/логин_у_хостера/data/www/site.ru/имя_файла

P.P.S. В качестве эксперимента попробовала написать так:

В результате получила для каждого значения переменной, кроме последних 2: January 01 1970 03:00:00. А для последних двух — реальное время изменения файлов: April 29 2019 00:03:41. April 14 2019 19:13:31.

Чудеса с этой filemtime().

1 ответ 1

Данная функция возвращает время последней записи блоков файла , иначе говоря, изменения содержания файла .

Речь идёт о файле. А в вашей ошибке речь о веб-странице:

PHP Warning: filemtime(): stat failed for https://site.ru in /var/www/.

Как вы знаете, этой страницы физически не существует на сервере, она генерируется php на момент запроса. Значит и данных о времени её изменения нет. Это, кстати, можно проверить, чекая http-заголовок ответа Last-Modified (его сервер отсылает с другими заголовками в ответ на запрос файла):

Поэтому вы, делая так @filemtime($str_url), получали January 01 1970 03:00:00 . Вы подовляли вывод шибок filemtime с помощью оператора @, и date() вам показывал время начала эпохи Линух (ну, и +3ч на часовой пояс вашего сервера). А вот последние два — я полагаю — файлы, по ним вы получили верные значения.

Вариант для вас — кешировать страницы. В таком случае на первый запрос https://site.ru будет создаваться физический html файл. Единственный минус — необходимость очистки кешей после каждого изменения контента, руками или скриптом.

Если сайт на WP и прочих — ищите екстеншены, решающие подобные вопросы.

Источник

Оцените статью