Вопрос:

Как установить права доступа к файлам в облачном движке приложения Google

php json google-app-engine google-cloud-platform google-app-engine-php

9 просмотра

1 ответ

5 Репутация автора

Как я могу изменить права доступа к файлу .json, чтобы все посетители сайта могли писать в него?

У меня есть веб-сайт на основе PHP в движке облачных приложений Google, который делает обычную телефонную книгу, которую можно редактировать, используя .json для хранения данных. После входа в систему вы можете добавлять, удалять и изменять записи в телефонной книге. Я сделал следующее:

  • получил все мои файлы загружены и работают
  • сопоставил мое собственное доменное имя
  • отредактировал app.yaml, чтобы скрипты PHP выполнялись корректно
  • Должен отобразить .json
  • должен добавить запись в телефонную книгу, но не могу ее сохранить, чтобы сохранить добавление для следующего входа

Вот важный код PHP

$dbFile = 'phoneBook.json';
$json = file_get_contents($dbFile);
$depth = 4;
$phBook = json_decode($json, true, $depth);

// ...manipulation...

$fp = fopen($dbFile, 'w');
fwrite($fp, json_encode($phBook));
fclose($fp);

И я использую это, чтобы манипулировать phonebook.json

Вот мой app.yaml

runtime: php55
api_version: 1
threadsafe: true

runtime_config:
  document_root: web

handlers:

- url: /(.+\.php)$
  script: \1 

- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

- url: /www/checklogin.php
  script: checklogin.php

Phonebook.json находится в том же каталоге, что и другие файлы php. В Linux все, что мне нужно сделать, это chmod и изменить разрешения, чтобы разрешить запись, есть ли в любом случае я могу сделать это с тем, что у меня здесь? Я где-то читал, что вы можете сделать это, если вы используете экземпляр виртуальной машины с вычислительным механизмом вместо ядра приложения. это мой единственный выбор?

Автор: codyy Источник Размещён: 11.08.2019 02:19

Ответы (1)


0 плюса

7328 Репутация автора

Вы не должны пытаться хранить данные в локальных файлах. App Engine - это сервис «без сервера» - в зависимости от ваших настроек масштабирования, он будет раскручивать экземпляры по мере необходимости для обслуживания трафика. Он также заменит экземпляры для улучшений или если они станут нездоровыми.

Таким образом, у вас будет хаос: некоторые запросы могут отправляться в разные экземпляры, поэтому на вашем phonebook.json отображается другое представление, поскольку они будут загружать файл локально. Даже если вы ограничите масштабирование только одним экземпляром, вы будете периодически терять все данные при выполнении обновлений.

Вместо этого используйте что-то вроде CloudSQL для хранения данных. Там все обслуживающие экземпляры смогут получить доступ к одним и тем же данным, и вы ничего не потеряете во время обновлений.

Автор: mensi Размещён: 11.08.2019 08:56
Вопросы из категории :
32x32