Я хочу записать данные в файл json после того, как кто-то заполнит данные через форму html. Таким образом, я использую php с чтением и записью файла json. На стороне сервера я использую apache на aws ubuntu.
Вот код моего html:
<div class="container">
<form class="wrapper" style="float: left;" action="php/SendEmail.php" method="POST">
<div class="title2">
<h1>Contact Me</h1>
</div>
<div class="contact-form">
<div class="input-fields">
<input name="name" type="text" class="input" placeholder="Name" required>
<input name="email" type="email" class="input" placeholder="Email Address" required>
<input name="phone" type="text" class="input" placeholder="Phone">
<input name="subject" type="text" class="input" placeholder="Subject" required>
</div>
<div class="msg">
<textarea placeholder="Message" name="message"></textarea>
<input class="btn send" type="submit" value="send"></input>
</div>
</div>
</form>
<div style="float: left;" id="rightContact">
<div class="contactSoc"><i class="fab fa-linkedin fa-3x"></i><a href="https://www.linkedin.com/in/zhikun-yuen-2418761a1" class="contactSoclink">View My Linkedin</a></div>
<div class="contactSoc"><i class="fab fa-github-square fa-3x"></i><a href="https://github.com/SamYuen101234" class="contactSoclink">View My Github</a></div>
<div class="contactSoc"><i class="fab fa-facebook-square fa-3x"></i><a href="https://www.facebook.com/profile.php?id=100000376414607" class="contactSoclink">View My Facebook</a></div>
<div class="contactSoc"><i class="fas fa-envelope-square fa-3x"></i><a href="mailto:samyuan101234@gmail.com" class="contactSoclink">samyuan101234@gmail.com</a></div>
</div>
</div>
Вот код php :
<?php
chmod("messagelog.json", 0755);
$messagelog = 'messagelog.json';
$arr_data = array();
$name = $_POST["name"];
$visitor_email = $_POST["email"];
$visitor_phone = $_POST["phone"];
$subject = $_POST["subject"];
$message = $_POST["message"];
try{
$formdata = array(
'name'=> $name,
'visitor_email'=> $visitor_email,
'visitor_phone'=>$visitor_phone,
'subject'=> $subject,
'message'=> $message
);
//Get data from existing json file
$jsondata = file_get_contents($messagelog);
// converts json data into array
$arr_data = json_decode($jsondata, true);
// Push user data to array
array_push($arr_data,$formdata);
//Convert updated array to JSON
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
var_dump($jsondata);
//write json data into data.json file
if(file_put_contents('messagelog.json', $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}catch(Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
Вот результат в браузере:
/home/ubuntu/environment/main/php/SendEmail.php:34:string '[
{
"name": "Vijay",
"visitor_email": "reddy@gmail.com",
"visitor_phone": "3284902384",
"subject": "Testing",
"message": "Message"
},
{
"name": "testing",
"visitor_email": "testing@test.com",
"visitor_phone": "testing",
"subject": "testing",
"message": "testing"
}
]' (length=362)
error
Что не так в моем коде или настройках? Я могу читать данные из файла json, но не могу писать в него. Я использовал chomd для изменения разрешения RW, но он не работает. Проблема в Apache?