我创建了一个基于用户输入更新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/
无效。
有什么建议吗?
答案 0 :(得分:2)
很可能它仍然是权限错误。
'json'目录和文件本身必须由apache用户或world writeable拥有(通常认为不太理想)。您发出的命令不是递归的,因此它不会更改相应的文件。另外,$ LOGNAME(区分大小写)是当前登录的用户而不是Apache进程,这可能类似于'www-data',具体取决于你的linux发行版。
所以,你可能需要这样的东西:
sudo chown -R www-data json
这将允许apache进程写入您的JSON文件及其父(json)目录,假设您从'/ var / www / html'目录运行它。