404 на живом Google App Engine, при работе на локальном сервере SDK

Я развернул несколько приложений PHP в стандартной среде GAE, и все работает нормально.

Сейчас я развертываю новое приложение, которое на локальном сервере предоставляется gcloud SDK работает как положено (команда терминала: dev_appserver.py --log_level=warning app.yaml).

Проблема в том, что при развертывании его в службе GAE (gcloud app deploy app.yaml --project myapp), Я получаю сообщение об ошибке 404:

The page could not be found

No web page found for the web address: xxx
HTTP ERROR 404

App.yaml выглядит так:

runtime: php55
api_version: 1
threadsafe: true

skip_files:
- README.md
- package.json

handlers:

- url: /(.*\.html)
script: mod_rewrite.php
secure: always

- url: /(.*\..{2,})
static_files: \1
upload: (.*\..{2,})
secure: always

- url: /.*
script: mod_rewrite.php
secure: always

Я также пытался добавить тестовый обработчик, указывающий на определенный файл:

- url: /(mytest\.html)
static_files: \1
upload: mytest.html
secure: always

Таким образом я смог достичь URL. Но это было так. Любой другой URL-адрес 404.

Интересно то, что на Versions На вкладке приложения GAE в текущей развернутой версии указано, что приложение 0 B, даже если нет предыдущих версий этого, в то время как он должен быть около 30 Мб. При развертывании все файлы 988, похоже, загружены, в том числе из-за моего медленного интернет-соединения, это занимает некоторое время.

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

0

Решение

Вы можете использовать application_readable опция обработчика для включения соответствующих статических файлов в код приложения. От Элемент обработчиков:

application_readable

Необязательный. Boolean. По умолчанию файлы объявлены в статических обработчиках файлов
загружаются как статические данные и предоставляются только конечным пользователям. Oни
не может быть прочитано приложением. Если для этого поля установлено значение true,
файлы также загружаются в виде данных кода, чтобы ваше приложение могло читать
их. Обе загрузки оплачиваются по вашему коду и статическим данным.
место хранения квоты на ресурсы.

Как это:

- url: /(.*\..{2,})
static_files: \1
upload: (.*\..{2,})
application_readable: true
secure: always
1

Другие решения

После нескольких часов тестирования я наконец понял, в чем проблема.

В GAE при объявлении определенного пути статическим он интерпретируется как путь без кода. Поэтому все файлы в этом пути не доступны для сценариев, работающих в среде PHP с require или же include и они не отображаются в развернутом отладчике кода.

По этой причине я поместил все статические файлы в подпапку (www) и нестатические файлы required сценариями PHP в другой подпапке.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector