Raspberry pi发布更新json文件

时间:2018-04-04 01:33:47

标签: php linux apache raspberry-pi

我创建了一个基于用户输入更新json文件的网站。 我在我的Windows PC上开发了这个,测试了运行WAMP的站点,它运行正常。
我想把它放在我的覆盆子pi上,运行apache2和php5。我已将网站放在/ var / www / html /网站中正确加载并运行。除了更改页面上的设置外,json文件永远不会更新。

这是php文件:

<?php
$LightOne = $_POST['lightOne'];
$LightTwo = $_POST['lightTwo'];
$LightThree = $_POST['lightThree'];

$ActivateLightsJson = file_get_contents('json/ActivateLights.json');
$ActivateLights = json_decode($ActivateLightsJson, true);

$ActivateLights["lightOne"] = $LightOne;
$ActivateLights["lightTwo"] = $LightTwo;
$ActivateLights["lightThree"] = $LightThree;

$fp = fopen('json/ActivateLights.json', 'w');
fwrite($fp, json_encode($ActivateLights));
fclose($fp);
?>

调用php的js:

function saveJson(){
lightOne = document.getElementById("lightOne").checked ? 1 : 0;
lightTwo = document.getElementById("lightTwo").checked ? 1 : 0;
lightThree = document.getElementById("lightThree").checked ? 1 : 0; 
$.post('saveJson.php',{lightOne:lightOne, lightTwo:lightTwo, lightThree:lightThree}, function(data){});
}

我使用了/ www更新了权限 遗憾的是,sudo chown $logname /var/www/无效。
有什么建议吗?

1 个答案:

答案 0 :(得分:2)

很可能它仍然是权限错误。

'json'目录和文件本身必须由apache用户或world writeable拥有(通常认为不太理想)。您发出的命令不是递归的,因此它不会更改相应的文件。另外,$ LOGNAME(区分大小写)是当前登录的用户而不是Apache进程,这可能类似于'www-data',具体取决于你的linux发行版。

所以,你可能需要这样的东西:

sudo chown -R www-data json

这将允许apache进程写入您的JSON文件及其父(json)目录,假设您从'/ var / www / html'目录运行它。