Intereting Posts
Насколько стабильна APC 3.1.x? Laravel: Migrations & Seeding для производственных данных Добавить другой класс в четные и нечетные divs Как получить имя переменной как строку в PHP? Использование API Google Directory для извлечения всех пользователей в домене вложенные функции в php генерируют исключение, когда внешний вызов вызывается более одного раза Как перемещать маркер на 100 метров с координатами Найдите три предыдущих рабочих дня с определенной даты Запрос превысил предел 10 внутренних переадресаций PHP короткий уникальный генерации идентификатора с использованием auto_increment? Функция PHP Mail () с заголовками Список файлов с исключением папок и всех его дочерних подкаталогов Строгий режим PHPUnit – как изменить тайм-аут по умолчанию Добавление программно вкладки пользовательских настроек в данные продукта администратора в WooCommerce JMSSerializerBundle: укажите группу для каждого атрибута

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 файлов, кажется, загружаются, потому что из-за моего медленного подключения к Интернету требуется некоторое время.

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

Вы можете использовать параметр application_readable handler для включения соответствующих статических файлов в код приложения. Из элемента Handlers :

application_readable

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

Как это:

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

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

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

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