У меня странная проблема с PHP и сценарием C, который использует текущее время. Моя программа немного сложна, но проблема сводится к следующему:
У меня есть этот код C, который печатает дату 1 минуту назад, текущую дату и дату через 1 минуту:
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv){
char date[9];
time_t rawtime;
struct tm * ptm;
int i;
time(&rawtime);
ptm = gmtime(&rawtime);
ptm->tm_min--;
for(i = 0; i < 3; i++){
rawtime = mktime(ptm);
ptm = gmtime(&rawtime);
snprintf(date, 9, "%d %d %d", ptm->tm_mday, ptm->tm_hour, ptm->tm_min);
printf("%s\n", date);
ptm->tm_min++;
}
return 0;
}
Когда я запускаю это в оболочке я получаю правильные результаты (формат печати - день месяца, час, минута):
$ ./test
17 20 7
17 20 8
17 20 9
Однако, когда я выполняю его через PHP, я получаю странные результаты. Это код PHP:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
И вот результат:
17 20 7
17 17 8
17 14 9
Часы явно неправильные. Кто-нибудь знает, что может быть причиной этого?