Google App Engine PHP 7.2 localhost не использует мою точку входа - PullRequest
0 голосов
/ 22 октября 2018

Я экспериментирую с миграцией моего сайта php 5.5 google app engine на сайт php 7.2 .Самое большое различие, которое я видел, состоит в том, что вместо определения отдельных обработчиков url в app.yaml нам нужно определить точку входа (например, index.php), и все запросы php маршрутизируются через нее.Тогда index.php должен содержать код, который работает с различными путями URL и требует правильного сценария php.

В документации по миграции сказано, что вместо запуска специального сервера dev_server GAE нам следует просто использовать встроенный веб-сервер PHPпри тестировании на localhost:

php -S localhost:8080

Однако, когда я это делаю, он не отправляет все запросы в мой index.php, и поэтому мой код маршрутизации не используется.

Что мне нужно сделать, чтобы я мог проверить свой сайт GAE на localhost?

Я на Mac, и в командной строке установлен php 7.1.Разница между 7.1 и 7.2 меня сбивает с толку?

РЕДАКТИРОВАТЬ:

Я читаю документы на встроенном веб-сервере PHP, и похоже, что мне нужно пройти скрипт маршрутизаторав качестве параметра при запуске веб-сервера, например, так:

php -S localhost:8080 index.php

Однако, когда я делаю это, все мои статические ресурсы (перечисленные в моем app.yaml) перестают обслуживать.Они были пойманы в конце моего скрипта роутера, который отправляет все, что не найдено, скрипту 404.php.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Я также мигрирую с php55 на php72.У меня тоже были такие же проблемы.

В app.yaml вместо «script auto» добавьте точное соответствие к сценарию, и оно также будет работать локально.Пример: script: index.php

Это будет работать локально и в GAE

0 голосов
/ 23 октября 2018

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

if (preg_match('/\.(?:png|jpg|jpeg|gif|svg|js|css|csv)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
}

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

...