Изменить дату файла php

Обновлено: 04.07.2024

Прежде чем начинать говорить о времени создания файла, нужно понимать принципы создания файла. Когда вы понимаете процесс, то вам становится всё ясно как день! Попробуем вывести время создания файла и вообще можно ли получить дату создания файла!?

Сегодня я посветил почти полдня в раскопках темы времени создания файла и , что вы думаете!?

О времени создания файла

Все в один голос утверждают, что дату создания файла нельзя узнать! И если толпа, как попугаи на всех сайтах говорит, как заведенная одно и тоже, это только и означает, что пора в этом разобраться!

Как частенько и бывает, что если я сомневаюсь, то скорее всего на 99% процентов, я окажусь прав! Это о том, что я прямо вижу нимб на голове и говорю словами- «Я пришел и принес вам истину!»

Но пока скинем нимб и пойдем докажем себе и другим как обстоит дело с временем создания файла!

Наш файл будет - старый дизайн сайта - недавно его восстановил, просто было жалко, что потеряется.

Принцип создания файла теория

Иногда, когда начинаешь разбираться в каких-то вопросах, очень трудно найти информацию! Это касается вопроса времени создания файла! И только через некоторое время я дошел самостоятельно, как же работает создание, определение, вывод времени создания файла.

Первое с чем нужно нам разобраться это то, как обстоит дело с перемещением файла с вашего компа на сервер!

Пусть данный файл будет сделан ещё до рождества христова, но как только вы его загрузите на сервер, то - он создался на сервере – это и будет время создания файла, а не то время, которое выставлено в данных о вашем файле на вашем компе! Т.к. сервер – это тот же комп, только находящийся в дата центре…

Надеюсь это понятно! И в продолжении мы сделаем маленький эксперимент, который и позволит потвердеть моё только, что сказанное!

Функция для получения данных о файле stat()

Приступим как раз к самому интересному!

Нам нужна вся инфа по нашему файлу – вы знаете такую функцию!?

Это функция – stat();

Ну и поскольку у нас данный файл не лежит в нашей папке, где скрипт, до него нужно сделать абсолютный путь, чтобы загнать данные в функцию. Обращаю ваше внимание на путь, мы взяли старый тот файл, о котором чуть выше была ссылка и закинули его в новую папку под теме же именем.

Существует возможность программного изменения времени модификации файла. Вам не потребуется производить какие-либо операции непосредственно над самим содержимым указанного файла, просто примените функцию touch(), и время с учетом правильной установки параметров будет изменено на то, которое действительно необходимо.

Для чего это используется? Например, вы написали скрипт, который проверяет лог-файл на изменения или же просто периодически заносит новые сведения. Обращение к данному файлу осуществляется посредством изменяемого времени, т. е. возникает необходимость, чтобы каждый день происходило изменение времени модификации, иначе может возникнуть какая-либо ошибка. Когда произвести модификацию физически невозможно из-за некоторых существенных факторов, появляется необходимость проделать это программно. В таком случае используют функцию установления времени модификации. Ее синтаксис:

int touch(string filename [, int time])

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

В случае отсутствия указанного файла функция просто создаст новый и присвоит ему установленное время модификации.

Функция touch() возвращает true при успешном выполнении, при возникновении какой-либо ошибки функция возвратит false.

print "Ошибка, невозможно изменить время модификации файла".

print "Время модификации файла ". basename ($path) ," было изменено <br>\n";

В процессе выполнения приведенного примера дата и время модификации файла будут изменены на текущее, так как в нашем случае не указано время, на которое необходимо изменять. Проверить правильность изменения времени можно при помощи функции filemtime(). В результате работы данного скрипта функция touch приведенная в операторе условия, будет возвращать значение true, что в свою очередь приведет к выполнению следующего блока программы. В итоге на экран браузера будет выведено:

Время модификации файла newname.txt было изменено на

Обратите внимание: теперь, когда мы знаем принцип работы функции basename() (см. п. 26.1), мы без проблем можем ее применять для вывода только файла, без указания конкретного пути до этого файла.

Как это возможно? И возможно ли?
Здравствуйте. есть файлы files.php, textbooks.php и т. д. GET-параметры (например).

Просмотр файлов DOC и DBF в форме. Возможно ли это?
Есть файлы документов (Word) и таблицы (DBF). Можно ли их просматривать в каком-нибудь.

Ну судя по всему, логику и впрям всю в сентябре написали, а до февраля Вам внешний вид меняли?))) Скорее всего можно, вопрос в другом является ли авторитетным то, что мы тут напишем. Как можно изменять даты создания на сервере, и возможно ли такое? Ну если установить неправильное системное время. почему бы и нет.

На unix-серверах дата создания/модификации/последнего доступа к любому файлу легко меняется встроенной утилитой touch. Этим пользуются хакеры чтобы скрыть свои действия на сервере.

Добавлено через 6 минут
И на сервер файлы обычно загружаются по FTP - даты их загрузки будут в логах ftp, если они ещё остались (кто, когда, под каким именем залогинивался и с какого IP).

Satorius,
Да, все загружается по FTP. Получается, если логи ftp удалить, то настоящих дат создания не узнать?

Настоящие даты создания легко подменить, логи FTP тоже, если вы сисадмин. Хостинг, поди, этой же веб-студии и принадлежит? Тогда они могут любые даты файлов сделать.
Некоторые хостеры периодически делают бэкапы, там может быть правильная информация о датах создания файлов.

То что модуль статистики был вставлен в 2014 году не значит что он работал. Куда выгружались/отправлялись результаты этой статистки, она должна быть с датами.

Как справедливо заметили выше, экспертное заключение уже есть и суд поверит ему. В принципе, можно опровергать и заключение эксперта, особенно если он как-то аффилирован с этой веб-студией.

Вирусов с моей стороны не было и быть не могло.Проблема была у разработчиков.

Может такая ситуация с вирусом как-то повлиять на изменение дат файлов?

Да, часто вирусы меняют дату заражённых файлов на старую, чтобы их трудно было обнаружить. Но поскольку хостинг принадлежит веб-студии, их админы могут менять даты файлов как им заблагорассудится, и исправлять любые логи - это простые текстовые файлы.

Возможно ли изменить автоподставляемый набор директив using при создании файлов проекта?
Возможно ли изменить автоподставляемый набор директив using при создании файлов проекта? Вообще.

Как это сделать , если это возможно, сам не уверен
Помогите, как это сделать Пример В таблице Excel я ввожу какую нибудь формулу (Sin(x), a не.

Возможно ли это и если да как это сделать?
Имеется удаленный сервер с управлением через KVM и с операционной системой windows server 2012, ее.

В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.

PHP-функции для работы с датой и временем

PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:

time() Возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX). getdate( ) Считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:

secondsСекунды (0-59)
minutesМинуты (0-59)
hoursЧасы (0-23)
mdayДень месяца (1-31)
wdayДень недели (0-6), начиная с воскресенья
monМесяц (1-12)
yearГод
ydayДень года (0-365)
weekdayНазвание дня недели (например, Friday)
monthНазвание месяца (например, January)
0Абсолютное время

Пример 1

РЕЗУЛЬТАТ ПРИМЕРА 1:

seconds = 25
minutes = 30
hours = 21
mday = 21
wday = 0
mon = 11
year = 2021
yday = 324
weekday = Sunday
month = November
0 = 1637519425
Сегодня: 21.11.2021

date() Форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:

aВключено обозначение "am" или "pm"
AВключено обозначение "AM" или "PM"
dДень месяца (01-31)
DСокращенное название дня недели (три буквы)
FПолное название месяца
gЧасы (12-часовой формат без ведущих нулей)
GЧасы (24-часовой формат без ведущих нулей)
hЧасы (12-часовой формат)
HЧасы (24-часовой формат)
iМинуты (00-59)
jДень месяца без ведущих нулей (1-31)
lПолное название дня недели
LПризнак високосного года (0 или 1)
mМесяц (01-12)
MСокращенное название месяца (три буквы)
nМесяц (1-12)
sСекунды (00-59)
tКоличество дней в данном месяце (от 28 до 31)
UАбсолютное время
wНомер дня недели (0 - воскресенье, 6 - суббота)
yГод (два разряда)
YГод (четыре разряда)
zДень года (0-365)
ZСмещение часового пояса в секундах (от -43200 до 43200)

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту "\". Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку "n", то надо ввести "\\n", поскольку "\n" является символом новой строки.

Пример 2

РЕЗУЛЬТАТ ПРИМЕРА 2:

Сегодня 21.11.21 21:30

mktime() Возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate() . Принимает до шести целочисленных аргументов в следующем порядке:

часы
минуты
секунды
месяц
день месяца
год

Пример 3

РЕЗУЛЬТАТ ПРИМЕРА 3:

22 January 1971, at 1.30 pm, Friday

checkdate() Проверка правильности даты. Аргументы: месяц, день, год. Возвращает true , если дата правильная, т.е.
месяц - целое число от 1 до 12;
день - целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
год - целое число от 1 до 32767.

Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.

strftime() Формирование локальной даты и времени.
Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate() . Строка формата может содержать следующие коды:

%aСокращенное название дня недели
%AПолное название дня недели
%bСокращенное название месяца
%BПолное название месяца
%cПредпочтительный формат даты и времени
%CНомер века
%dДень месяца (1-31)
%DТо же, что и %m/%d/%y
%eМесяц (1-12)
%hТо же, что и %b
%HЧасы (24-часовой формат)
%IЧасы (12-часовой формат)
%jДень года (0-365)
%mМесяц (1-12)
%MМинуты
%nСимвол новой строки
%pВключено обозначение "am" или "pm"
%rВремя с использованием a.m./p.m.-нотации
%RВремя в 24-часовом формате
%SСекунды (00-59)
%tСимвол табуляции
%TТо же, что и %H:%M:%S
%uНомер дня недели (1 - понедельник, 7 - воскресенье)
%UНомер недели. Отсчет начинается с первого воскресенья года
%VНомер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
%WНомер недели. Отсчет начинается с первого понедельника года
%wНомер дня недели (0 - воскресенье, 6 - суббота)
%xПредпочтительный формат даты без времени
%XПредпочтительный формат времени без даты
%yГод (два разряда)
%YГод (четыре разряда)
%ZЧасовой пояс (имя или сокращение)
%%Символ "%"

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

Пример 4

РЕЗУЛЬТАТ ПРИМЕРА 4:

Sunday 21 November 2021 21:30
Сегодня Sunday 21 November 2021 21:30:25
MSK

Читайте также: