Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Raspberry pi发布更新json文件_Php_Linux_Apache_Raspberry Pi - Fatal编程技术网

Php Raspberry pi发布更新json文件

Php Raspberry pi发布更新json文件,php,linux,apache,raspberry-pi,Php,Linux,Apache,Raspberry Pi,我创建了一个基于用户输入更新json文件的网站。 我在我的windows pc上开发了这个,测试了运行WAMP的站点,它工作正常 我想把这个放在我的树莓皮上,它运行apache2和php5。我已将该网站放置在/var/www/html/中,网站加载正确且功能正常。除了更改页面上的设置外,json文件永远不会更新 这是php文件: <?php $LightOne = $_POST['lightOne']; $LightTwo = $_POST['lightTwo']; $LightThree

我创建了一个基于用户输入更新json文件的网站。
我在我的windows pc上开发了这个,测试了运行WAMP的站点,它工作正常
我想把这个放在我的树莓皮上,它运行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);
?>
我使用更新了/www的权限
sudo chown$logname/var/www/
不幸的是,这不起作用。

有什么建议吗

很可能仍然是权限错误

“json”目录和文件本身必须由apache用户拥有,或者是可写的(通常认为不太可取)。您发出的命令不是递归的,因此它没有更改相应的文件。另外,$LOGNAME(区分大小写)是当前登录的用户,而不是Apache进程,根据您的linux发行版,它可能类似于“www数据”

因此,您可能需要以下内容:

sudo chown-R www-data-json


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

您在
ls-l
中看到的目录和文件的权限是什么?这个代码没有问题,所以问题出在其他地方。@VoteyDisciple-如果我在这里截取了你可能的答案,我很抱歉。直到我提交了可能的答案,我才注意到你的评论。一旦你从你的问题中获得了合适的数据,如果你想发布,我可以删除。json文件的权限是total 4-rw-r--r--1 pi 48 data.json。同样,在上面的评论中,你提到该文件名为“data.json”,但在你的代码中它名为“ActivateLights.json”。/var/www/html/json目录中的文件名必须是ActiveLights.json(区分大小写)要匹配您的代码,必须使用下面的命令归“www data”所有。我在/var/www/html/中的站点在html文件夹/var/www/html/json中的json文件夹中。当我运行您提供的命令时,它显示“chown无法访问“json”:没有这样的文件或目录”。抱歉,我不熟悉linux commandsTry,它来自/var/www/html目录-您只需要在包含“json”目录的文件夹中运行它。如果您需要访问该目录,您可以使用“cd/var/www/html”或以“sudo chown-R www-data/var/www/html/json”的形式运行该命令,该命令将更改权限,无论您从何处运行它,因为它引用了整个路径。谢谢,您给了我正确的方向。结果只是运行了chmod 777 Data.json,这不是真正安全的,但它只是一个个人项目,所以没问题。再次感谢你。
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){});
}