Невозможно записать / добавить от json до php file_put_contents - PullRequest
0 голосов
/ 03 августа 2020

Я хочу записать данные в файл 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...