Файл JSON не обновляется на сервере - PullRequest
0 голосов
/ 12 декабря 2018

Я не могу записать файл JSON на сервер, используя следующий код:

<form method="POST">
<a href="index.php">Back</a>
<p>
    <label for="id">ID</label>
    <input type="text" id="id" name="id">
</p>
<p>
    <label for="firstname">Firstname</label>
    <input type="text" id="firstname" name="firstname">
</p>
<p>
    <label for="lastname">Lastname</label>
    <input type="text" id="lastname" name="lastname">
</p>
<p>
    <label for="address">Address</label>
    <input type="text" id="address" name="address">
</p>
<p>
    <label for="gender">Gender</label>
    <input type="text" id="gender" name="gender">
</p>
<input type="submit" name="save" value="Save">
</form>

<?php
if(isset($_POST['save'])){
    //open the json file
    $data = file_get_contents('members.json');
    $data = json_decode($data);

    //data in out POST
    $input = array(
        'id' => $_POST['id'],
        'firstname' => $_POST['firstname'],
        'lastname' => $_POST['lastname'],
        'address' => $_POST['address'],
        'gender' => $_POST['gender']
    );

    //append the input to our array
    $data[] = $input;
    //encode back to json
    $data = json_encode($data, JSON_PRETTY_PRINT);
    file_put_contents('members.json', $data);

    header('location: index.php');
}
?>

Код отлично работает на локальном хосте.Я установил разрешение на все необходимые каталоги.На Linux Server установлена ​​версия PHP 5.4.16.

Пожалуйста, дайте мне знать любое решение для вышеуказанной проблемы.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я получил ответ во время поиска, и, как показано ниже, я обновил логин как root и выполнил следующие команды

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

https://serverfault.com/questions/131105/

0 голосов
/ 12 декабря 2018

Я обновил ваш код и прокомментировал по пути.Пожалуйста, запустите и дайте мне знать, что говорит ваш код.

Обновлено

if(isset($_POST['save'])){


    //Check to see if file exist.
    echo file_exists('members.json') ? 'Found it' : 'What file';

    //open the json file
    $data = file_get_contents('members.json');

    $data = json_decode($data, TRUE); //<-- This was being outputted as an object.  I added the
    //TRUE flag to output as an array.

    //Lets test for some json errors.
    echo 'Decode json errors: ' . json_last_error();

    //data in out POST
    //Since your $data is an array now, you can add another array to your $data array.
    $input = array(
        'id' => $_POST['id'],
        'firstname' => $_POST['firstname'],
        'lastname' => $_POST['lastname'],
        'address' => $_POST['address'],
        'gender' => $_POST['gender']
    );

    //append the input to our array
    $data[] = $input;
    //encode back to json
    $data = json_encode($data); //Do you really need the json pretty print?  Out it goes.

    //For testing purposes run this line and report back what it says.
    echo 'Encode json errors: ' . json_last_error();

    //It looks like the file is not writable.  So we are going to change the permissions.
    if(!is_writable('members.json')){

      chmod('members.json', 0777); //This pretty much gives full read-write permissions to that file.

    }

    //For giggles lets test to see if you have your permissions set up to write.
    echo is_writable('members.json') ? 'Yup' : 'No way';


    file_put_contents('members.json', $data);

    //We are going to change the permissions back to readonly.
    //You should read up on permissions and how to properly set them.
    chmod('members.json', 0644); //This restricts to read only.

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