Google App Engine PHP 7.2本地主机未使用我的入口点

时间:2018-10-22 20:50:07

标签: php google-app-engine php-7.1 php-7.2

我正在尝试migration my php 5.5 google app engine site to a php 7.2网站。我看到的最大区别是,我们无需定义app.yaml中的单个url处理程序,而是需要定义一个入口点(例如index.php),所有php请求都将通过该入口点进行路由。然后index.php应该包含处理各种URL路径的代码,并需要正确的php脚本。

迁移文档说,我们不必运行特殊的GAE dev_server,而应在本地主机上进行测试时使用内置的PHP网络服务器:

php -S localhost:8080

但是,当我这样做时,它没有将所有请求发送到我的index.php,因此没有使用我的路由代码。

我需要做什么才能在本地主机上测试我的GAE网站?

我在Mac上,并且在命令行上安装了php 7.1。 7.1和7.2之间的区别是让我震惊吗?

编辑:

我通读了内置PHP网络服务器上的文档,看来我在启动网络服务器时需要像这样传递路由器脚本作为参数:

php -S localhost:8080 index.php

但是,当我这样做时,所有我的静态资源(列在app.yaml中)将停止服务。它们被我的路由器脚本结尾捕获,该脚本将未找到的任何内容发送到404.php脚本。

2 个答案:

答案 0 :(得分:1)

我还从php55迁移到php72。我也有同样的问题。

在app.yaml中,“脚本自动”将完全匹配的内容添加到脚本中,它也将在本地运行。例如:脚本:index.php

这将在本地和GAE中工作

答案 1 :(得分:0)

我越来越近了,但是我不得不在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根本没有被使用,这似乎是一种可怕的方法,因为我的应用程序在生产中的行为可能完全不同。