我需要用php脚本设置树莓派的日期和时间。经过一番研究,我使用php脚本调用python脚本。My 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,我可以更新树莓的日期时间。
在基于Linux的系统(例如树莓派)上通过PHP设置日期的示例:
<?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中:
深入挖掘,您可能需要允许您的Web服务器通过调整/etc/sudoers
文件来执行/bin/date
。可以添加:
apache <hostname> = (root) NOPASSWD: /bin/date
运行cat /etc/hostname
确认<hostname>
。我怀疑是覆盆子或树莓。修改它以适合您的设备。
然后运行,我们对脚本做一个小的改变:
$output = shell_exec('sudo /bin/date -s "$dt"');
应该可以了。在这里找到这个信息:https://unix.stackexchange.com/questions/44865/change-server-date-using-php