本页面介绍如何在 App Engine 标准环境中将 PHP 5.5 应用迁移到 PHP 7/8 运行时。
PHP 5.5 和 PHP 7/8 之间的兼容性问题
官方 PHP 文档介绍了关于从不同 PHP 版本迁移的相关信息:
- 从 PHP 5.5.x 迁移到 PHP 5.6.x.
- 从 PHP 5.6.x 迁移到 PHP 7.0.x.
- 从 PHP 7.0.x 迁移到 PHP 7.1.x
- 从 PHP 7.1.x 迁移到 PHP 7.2.x
- 从 PHP 7.2.x 迁移到 PHP 7.3.x
- 从 PHP 7.3.x 迁移到 PHP 7.4.x
- 从 PHP 7.4.x 迁移到 PHP 8.0.x
- 从 PHP 8.0.x 迁移到 PHP 8.1.x
迁移 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 | 修改后 |
|
如果您使用了任何已弃用的字段,则应用部署将出错。
如需了解详情,请参阅 app.yaml
参考。
减少运行时限制
相比 PHP 5.5 运行时,PHP 7/8 运行时的限制较少。
- 安装第三方依赖项。
- 运行时包含完整的文件系统。
- 在实例运行时,创建超出请求范围的后台线程或进程。
- 使用 PHP 版 Google Cloud 客户端库将应用与其他 Google Cloud 服务集成。如需了解详情,请参阅安装 Google Cloud 客户端库页面。
如需了解详情,请参阅 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 中无法作为单独产品提供的旧版捆绑服务(例如搜索),您可以使用第三方提供商或使用其他解决方法。如需详细了解如何迁移到未捆绑服务,请参阅从捆绑服务迁移。
在本地运行应用
如需测试应用并在本地运行,请执行以下操作:
- 在本地安装 PHP 版本,该版本与 App Engine 标准环境中可用的 PHP 7/8 运行时之一相对应。
- 安装 Web 服务器并使用它在本地提供应用。
例如,通过运行以下命令启动 HTTP 服务器:
php -S localhost:8080
然后,使用网络浏览器访问 http://localhost:8080 以查看应用。