Проверьте файлы в каталоге изменены

Мне нужно развернуть приложение PHP, написанное CodeIgniter, на веб-сервере клиента (CentOS 5 или 6). Поскольку PHP является языком сценариев, для развертывания его не нужно компилировать в двоичный код. Есть вероятность, что клиент сам изменит программу PHP без уведомления. Если клиент изменил программу, которая вывела приложение из строя, нам нужно приложить дополнительные усилия, чтобы найти их модификацию и исправить ее.

Поэтому я хотел бы сделать что-то, что может легко дать мне знать, что любые файлы (php, css, html и т. Д.) Приложения были изменены после моего развертывания. Кто-нибудь предлагает метод?

Спасибо,

0

Решение

использование filemtime()

int filemtime ( string $filename )

Эта функция PHP возвращает время, когда блоки данных файла были записаны, то есть время, когда содержимое файла было изменено.

<?php
// outputs e.g.  somefile.txt was last modified: December 12 2014 09:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

Чтобы получить время последнего изменения каталога, вы можете использовать это:

<pre>
$getLastModDir = filemtime("/path/to/directory/.");
</pre>

Обратите внимание на последнюю точку, которая необходима для просмотра каталога в виде файла и фактической даты его последнего изменения.

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

Чтобы получить дату изменения какого-либо удаленного файла, вы можете использовать fine функция блокнотом на Codewalker точка ком (с улучшениями от dma05 на веб-сайте de de и madsen на веб-сайте lillesvin dot).

Но вы можете достичь того же результата более легко сейчас с stream_get_meta_data (PHP> 4.3.0).

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

<?php

// get remote file last modification date (returns unix timestamp)
function GetRemoteLastModified( $uri )
{
// default
$unixtime = 0;

$fp = fopen( $uri, "r" );
if( !$fp ) {return;}

$MetaData = stream_get_meta_data( $fp );

foreach( $MetaData['wrapper_data'] as $response )
{
// case: redirection
if( substr( strtolower($response), 0, 10 ) == 'location: ' )
{
$newUri = substr( $response, 10 );
fclose( $fp );
return GetRemoteLastModified( $newUri );
}
// case: last-modified
elseif( substr( strtolower($response), 0, 15 ) == 'last-modified: ' )
{
$unixtime = strtotime( substr($response, 15) );
break;
}
}
fclose( $fp );
return $unixtime;
}
?>
0

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

Других решений пока нет …

А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×