Мне нужно установить дату и время моего Raspberry Pi с помощью сценария PHP.
После некоторых исследований я использую php-скрипт для вызова Python-скрипта.
Мой datetime.php:
$date = '2015-09-05';
$output = shell_exec('/usr/bin/python/home/pi/datalogger/modules/sys/write_date.py ' . $date);
echo $output;
os.system("sudo date -s "+"'"+date_object+"'")
write_date.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
from datetime import datetime
def main():
date=sys.argv[1]
time='22:04'
print(date) #for debug
string_date=date+' '+time+':00'
date_object2=datetime.strptime(string_date, "%Y-%m-%d %H:%M:%S")
date_object=date_object2.strftime("%a %b %d %H:%M:%S"+" UTC "+"%Y")
os.system("sudo date -s "+"'"+date_object+"'")
if __name__ == '__main__':
main()
Когда я обновляю свой datetime.php, у меня есть печать даты, поэтому скрипт работает … проблема в том, что моя дата не обновляется. Но если я запускаю write_date.py в командной строке, я могу обновить дату и время малины.
Пример установки даты через PHP в системе, основанной на Linux (E.G. Raspberry Pi):
<?php
date_default_timezone_set('UTC');
$dt = date("D M j G:i:s T Y", strtotime("2015-09-05 22:04"));
$output = shell_exec('sudo date -s "$dt"');
?>
Также strptime()
а также strftime()
существуют в PHP:
http://php.net/manual/en/function.strptime.php
http://php.net/manual/en/function.strftime.php
Если копнуть немного глубже, возможно, вам придется разрешить вашему веб-серверу работать /bin/date
через регулировку в /etc/sudoers
файл. Можно добавить:
apache <hostname> = (root) NOPASSWD: /bin/date
Подтвердите <hostname>
запустив cat /etc/hostname
, Я подозреваю, что это малина или малина. Измените его в соответствии с вашим устройством.
Чтобы потом запустить, мы вносим одно небольшое изменение в скрипт:
$output = shell_exec('sudo /bin/date -s "$dt"');
Это должно сделать это. Нашел эту информацию здесь: https://unix.stackexchange.com/questions/44865/change-server-date-using-php
Других решений пока нет …