Я пытаюсь выполнить 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