PHP 5.5 与 PHP 7/8 之间的差异

本页面介绍如何在 App Engine 标准环境中将 PHP 5.5 应用迁移到 PHP 7/8 运行时。

PHP 5.5 和 PHP 7/8 之间的兼容性问题

官方 PHP 文档介绍了关于从不同 PHP 版本迁移的相关信息:

迁移 app.yaml 文件

您必须部署一个前端控制器来处理应用中的所有路由。如需了解详情,请参阅应用启动

PHP 7/8 运行时不允许自定义 script 处理程序元素。唯一有效值是 auto,因为所有流量都使用 entrypoint 命令传送。所有非静态网址处理程序必须包含 script: auto 才能成功部署。

修改了 app.yaml 配置文件中某些元素的行为:

元素更改类型说明
entrypoint已添加可选。您可以使用此字段指定应用启动时将运行的命令
threadsafe已弃用假定所有应用的线程安全,这意味着实例可以同时处理多个请求。
api_version已弃用以前需要,但在 PHP 7/8 运行时中不需要。
application_readable已弃用
builtins已弃用
libraries已弃用可以使用 composer.json 元数据文件安装任意第三方依赖项。
handlers修改后
  • script 字段为可选字段,唯一可接受的值是 auto。使用具有应用内路由的网络框架(例如 LaravelSymfonySlim 或类似选项),以在请求到达特定路由时执行脚本。
  • 不支持 login 字段。使用身份和访问权限管理 (IAM) 执行用户管理。

如果您使用了任何已弃用的字段,则应用部署将出错。

如需了解详情,请参阅 app.yaml 参考。

减少运行时限制

相比 PHP 5.5 运行时,PHP 7/8 运行时的限制较少。

如需了解详情,请参阅 PHP 7/8 运行时环境文档

从 App Engine PHP SDK 迁移

为了减少运行时迁移工作量和复杂性,App Engine 标准环境允许您在 PHP 7/8 运行时中访问许多旧版捆绑服务及其 API,例如 Memcache。您的 PHP 7/8 应用可以通过 App Engine SDK for PHP 7/8 调用捆绑服务 API,并访问与 PHP 5 运行时相同的大多数功能。并非所有适用于 PHP 5 的旧版捆绑服务在 PHP 7/8 中都有相应的服务。如需查看适用于 PHP 7/8 的旧版捆绑服务 API 的完整列表,请参阅旧版捆绑服务 API 参考文档

您还可以选择使用 Google Cloud 产品,其可提供与旧版捆绑服务类似的功能。这些 Google Cloud 产品提供惯用的 Google Cloud CLI 客户端库。对于在 Google Cloud 中无法作为单独产品提供的旧版捆绑服务(例如搜索),您可以使用第三方提供商或使用其他解决方法。如需详细了解如何迁移到未捆绑服务,请参阅从捆绑服务迁移

在本地运行应用

如需测试应用并在本地运行,请执行以下操作:

  1. 在本地安装 PHP 版本,该版本与 App Engine 标准环境中可用的 PHP 7/8 运行时之一相对应。
  2. 安装 Web 服务器并使用它在本地提供应用。

例如,通过运行以下命令启动 HTTP 服务器:

php -S localhost:8080

然后,使用网络浏览器访问 http://localhost:8080 以查看应用。