Мне нужно развернуть приложение 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
функцию с помощью блокнота в кодовом слайде com com (с улучшениями dma05 в веб-точке de и madsen в сети lillesvin dot net).
Но теперь вы можете добиться того же результата с помощью stream_get_meta_data
(PHP> 4.3.0).
Однако может возникнуть проблема, если произойдет некоторая переадресация. В этом случае HTTP-ответ сервера не содержит заголовок Last-Modified, но есть заголовок 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;
}
?>