Google Cloud App Engine app.yaml php72 路由问题
Google Cloud App Engine app.yaml php72 issue with routing
我有一个核心 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:
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) 到登录页面一次又一次......并以错误结束 重定向过多。
我错过了什么?
GAE 日志:
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
原来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;
}
您可以在此处找到自定义 FrontController 和不同框架的 php72 示例。 https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/appengine
感谢大家的努力。希望这能帮助像我一样迷失的灵魂。
动态:
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;
}
我有一个核心 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:
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) 到登录页面一次又一次......并以错误结束 重定向过多。
我错过了什么?
GAE 日志:
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
原来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;
}
您可以在此处找到自定义 FrontController 和不同框架的 php72 示例。 https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/appengine
感谢大家的努力。希望这能帮助像我一样迷失的灵魂。
动态:
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;
}