Мне нужно развернуть приложение PHP, написанное CodeIgniter, на веб-сервере клиента (CentOS 5 или 6). Поскольку PHP является языком сценариев, для развертывания его не нужно компилировать в двоичный код. Есть вероятность, что клиент сам изменит программу PHP без уведомления. Если клиент изменил программу, которая вывела приложение из строя, нам нужно приложить дополнительные усилия, чтобы найти их модификацию и исправить ее.
Поэтому я хотел бы сделать что-то, что может легко дать мне знать, что любые файлы (php, css, html и т. Д.) Приложения были изменены после моего развертывания. Кто-нибудь предлагает метод?
Спасибо,
использование 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;
}
?>
Других решений пока нет …