我需要用php脚本设置我的覆盆子pi的日期和时间。 经过一些研究后,我使用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我的命令行,我可以更新raspberry的日期时间。
答案 0 :(得分:0)
在基于Linux的系统(E.G. Raspberry Pi)上通过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"');
?>
PHP中还存在strptime()
和strftime()
:
http://php.net/manual/en/function.strptime.php
http://php.net/manual/en/function.strftime.php
深入挖掘,您可能需要允许Web服务器通过调整/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