Как создать файл app.yaml?

Я пытаюсь выполнить GAE для php и потерялся в файле app.yaml. Я могу понять эту часть из учебника Google, в котором показано, как указать весь запрос URL-адреса в один файл

https://developers.google.com/appengine/docs/php/gettingstarted/helloworld

Но это не помогает в моем случае. Я собираюсь опубликовать то, что у меня установлено, и файловая структура находится на рис. введите описание изображения здесь

app.yaml

application: xxx version: 1 runtime: php api_version: 1 threadsafe: true handlers: - url: /stylesheets static_dir: stylesheets - url: /images static_dir: images - url: /scripts static_dir: scripts - url: /favicon.ico static_files: favicon.ico upload: favicon.ico - url: / script: main.php login: required auth_fail_action: redirect - url: /main script: main.php login: required auth_fail_action: redirect 

Поэтому моя целевая страница для xxx.appspot.com или xxx.appsport.com/main будет main.php. И он отлично работает.

main.php

 <?php session_start(); date_default_timezone_set('America/Los_Angeles'); require_once 'google/appengine/api/users/UserService.php'; use google\appengine\api\users\User; use google\appengine\api\users\UserService; $user = UserService::getCurrentUser(); $name= $user->getNickname(); $name = explode(".",$name); $name[0]= ucfirst($name[0]); $name[1]= ucfirst($name[1]); $name = $name[0]." ".$name[1]; $_SESSION['name']=$name; $_SESSION['email']= getenv('USER_EMAIL'); header('Location: login.php'); 

Таким образом, он загружает начало сеанса и получает имя пользователя и адрес электронной почты для нескольких строковых форматирования, а затем устанавливается как переменная сеанса, а затем я проверяю соответствие условия и на основе условия перенаправления на другой скрипт, который выполняет некоторую проверку и так далее. Сделать просто, я просто перенаправляю его на login.php

login.php

 <?php session_start(); echo $_SESSION['name']; 

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

введите описание изображения здесь

Так что же я сделал не так? Я собираюсь использовать страницу входа в систему, чтобы вытащить данные пользователя из базы данных SQL и на основе значения перенаправить пользователя на разные страницы, на которых будут отображаться разные формы, таблицы, отчеты на основе их настроек.

Например. От login.php

если userA принадлежит Dept1

header ('Местоположение: /Dept1/main.php');

еще

header ('Местоположение: /Deptx/main.php');

Поэтому я ожидаю много переадресаций, и каждая из перенаправлений должна также иметь возможность переносить установленные переменные сеанса. Я могу это сделать во время работы на обычном PHP-сервере. Для версии GAE требуется некоторое повторное обучение. Я хотел бы поблагодарить любого заблаговременно только за то, что уделил время чтению, пока он не услышит. Спасибо.

Также было бы неплохо, если бы кто-то мог сделать подробный учебник о том, как использовать app.yaml и как его можно использовать с демонстрационным примером, например, в w3school.

Ваш app.yaml выглядит хорошо; это просто неполно.

Вы определили, что карта «/» и «/ main» соответствует вашему скрипту main.php, и это отлично работает.

Но когда браузер пользователя запрашивает «/login.php», App Engine смотрит в app.yaml и не находит никакого маршрута, который соответствует, поэтому вы получаете эту ошибку 404.

Чтобы справиться с этим конкретным случаем, вы можете использовать другую запись с «url: /login.php» и «script: login.php».

Затем я просмотрю ваше приложение и убедитесь, что у вас нет других маршрутов.

Вам также может потребоваться использование подстановочных знаков в ваших URL-адресах в app.yaml. В противном случае, если ваше приложение когда-либо отправляет пользователя на URL-адрес, например «/ main / subpage», он не будет обращаться к обработчику main.php, поскольку он не соответствует маршрутам в app.yaml. В этом случае вы можете использовать «url: /main.*» в качестве примера. Или вы можете использовать обработчик «/.*» в конце вашего приложения.yaml.

Вы можете узнать об этих подстановочных знаках и других параметрах app.yaml на странице справки PHP app.yaml: https://developers.google.com/appengine/docs/php/config/appconfig

(Вам не нужны подстановочные знаки для ваших таблиц стилей, javascript и изображений, хотя, потому что вы использовали static_dir для них.)

Вот мое, это может помочь. Pcode – это только одна из моих папок (не уверен, что вам нужно определить папки, но я все равно оставил их там):

 application: theclearview1 version: 10 runtime: php api_version: 1 handlers: - url: /(.*\.(htm$|html$|css$|js$)) static_files: \1 upload: (.*\.(htm$|html$|css$|js$)) application_readable: true - url: /css static_dir: css - url: /js static_dir: js - url: /(.*\.(ico$|jpg$|png$|gif$)) static_files: \1 upload: (.*\.(ico$|jpg$|png$|gif$)) application_readable: true - url: /Pcode/(.+) script: Pcode/\1 - url: /(.+) script: \1 - url: /.* script: index.php 

В принципе, я думаю, что следующие строки будут работать подобно регулярному хосту php, например, hostgator , godaddy т. Д .:

 handlers: - url: /(.*\.(htm$|html$|css$|js$)) static_files: \1 upload: (.*\.(htm$|html$|css$|js$)) application_readable: true - url: /(.*\.(ico$|jpg$|png$|gif$)) static_files: \1 upload: (.*\.(ico$|jpg$|png$|gif$)) application_readable: true - url: /(.+) script: \1 - url: /.* script: index.php