КАК ПОЛУЧИТЬ: Настройка часового пояса FTP-сервера? - PullRequest
7 голосов
/ 14 июля 2010

Я использую PHP-функцию ftp_rawlist для получения списка файлов и связанных с ними последних измененных даты / времени.Для моих целей мне нужно знать часовой пояс (или смещение) даты / времени последнего изменения.Одни даты / время для меня бесполезны, так как мне нужно преобразовать их в UTC.

Есть ли какой-нибудь способ выяснить, какой часовой пояс установлен на сервере FTP?

Ответы [ 4 ]

9 голосов
/ 27 июля 2010

В стандарте FTP нет способа определения часового пояса удаленного сервера.

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

0 голосов
/ 07 декабря 2018

Ну, протокол FTP не предоставляет локальное время явно. Когда доступ для записи доступен, вы можете загрузить новый файл и проверить время модификации. Не имея доступа для записи, вы можете периодически читать каталог FTP и отмечать время изменения каждой записи. Когда время изменения изменится, вы точно будете знать местное время сервера. Достаточно 30 минут проверки, автоматически, конечно:)

0 голосов
/ 03 ноября 2015

У меня недавно была такая же проблема.Мой подход состоял в том, чтобы создать папку в корне с именем / time, а затем прочитать ее и проверить дату создания папок.Затем я могу установить разницу во времени между моим FTP-клиентом и сервером.Надеюсь, это поможет.

Кстати, я использую https://github.com/ArxOne/FTP

// Establish a fallback
var servertime = DateTime.Now;
try
{
    // query for the existance of a time folder
    var timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time");
    // delete it if found
    if (timefolder != null)
    {
        ftpClient.Delete("/time");
    }
    // if not found create one
    ftpClient.Mkd("/time");
    timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time");
    if (timefolder == null)
    {
        Logger.Fatal("Time check failed");
        return;
    }
    // now grab the time of the folder.
    servertime = timefolder.Date;
}
catch (Exception x)
{
    Logger.Fatal(x,"Time check fatal error");
    return;
}
0 голосов
/ 09 сентября 2015

Попробуйте определить свой часовой пояс в начале вашего php-кода.Пример: date_default_timezone_set ("CET");Для меня это решение работало, поскольку оно автоматически преобразовывало время сервера из другого часового пояса в желаемый.

...