Google Cloud App Engine app.yaml php72 проблема с маршрутизацией - PullRequest
0 голосов
/ 18 января 2019

У меня есть основной сайт php, и это моя текущая конфигурация app.yaml

runtime: php72

handlers:
# Serve a directory as a static resource.
- url: /assets
  static_dir: assets

- url: /css
  static_dir: css

- url: /js
  static_dir: js

- url: /ckeditor
  static_dir: ckeditor

# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
  static_files: \1
  upload: .+\.(gif|png|jpg)$

# add all script entries like this
- url: /login.php
  script: auto

# Serve your app through a front controller at index.php or public/index.php.
- url: .*
  script: auto

Проблема с этой конфигурацией заключается в том, что она продолжает перенаправлять (302) на страницу входа снова и снова .. и в итоге выдает ошибку Too Many Redirects .

Что мне не хватает?

GAE Logs:

2019-01-18 17:10:07 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:10 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:13 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:16 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:19 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:22 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:10:25 default[20190118t223420]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:32:26 default[20190118t225141]  "GET / HTTP/1.1" 302
2019-01-18 17:32:26 default[20190118t225141]  nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /tmp/google-config/nginx.conf:3
2019-01-18 17:32:30 default[20190118t225141]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:32:33 default[20190118t225141]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:54:59 default[20190118t230733]  "GET / HTTP/1.1" 302
2019-01-18 17:55:00 default[20190118t230733]  nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /tmp/google-config/nginx.conf:3
2019-01-18 17:55:02 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:55:05 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:55:07 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:55:09 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 17:55:11 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 18:17:29 default[20190118t230733]  "GET / HTTP/1.1" 302
2019-01-18 18:17:32 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 18:17:35 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 18:17:37 default[20190118t230733]  "GET /login.php HTTP/1.1" 302
2019-01-18 18:17:40 default[20190118t230733]  "GET /login.php HTTP/1.1" 302

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Динамический:

switch (@parse_url($_SERVER['REQUEST_URI'])['path']) 
{
    case @parse_url($_SERVER['REQUEST_URI'])['path']:
    $name_url_path = substr(@parse_url($_SERVER['REQUEST_URI'])['path'],1);
    $name_url_path = empty($name_url_path)?'home_page.php':$name_url_path;
    $name_url_path = ($name_url_path == 'index.php')?'home_page.php':$name_url_path;
    require $name_url_path;
    break;
    default:
    break;
}
0 голосов
/ 23 января 2019

Оказывается, что php72 не поддерживает выполнение скриптов напрямую для стандартной среды. Все должно пройти через пользовательский FrontController. Поэтому я создал один FrontController, который обрабатывает практически все маршруты. Ниже приведен код, который я положил в index.php. Он будет обрабатывать все указанные маршруты.

switch (@parse_url($_SERVER['REQUEST_URI'])['path']) {
    case '/':
        require 'login.php';
        break;
    case '/product.php';
        require 'product.php';
        break;
    default:
        break;
}

Вы можете найти примеры для php72 для пользовательского FrontController и для различных фреймворков здесь. https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/appengine/php72

Спасибо всем за все ваши усилия. Надеюсь, это поможет таким потерянным душам, как я.

...