您还可以选择使用 Google Cloud 产品,其可提供与旧版捆绑服务类似的功能。这些 Google Cloud产品提供惯用的 Google Cloud CLI 客户端库。对于在 Google Cloud中无法作为单独产品提供的旧版捆绑服务(例如搜索),您可以使用第三方提供商或使用其他解决方法。如需详细了解如何迁移到未捆绑服务,请参阅从捆绑服务迁移。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-04。"],[[["\u003cp\u003eThis guide provides instructions for migrating applications from the first-generation PHP runtime to the supported second-generation PHP runtimes on App Engine.\u003c/p\u003e\n"],["\u003cp\u003ePHP 5 reached its end of support on January 30, 2024, and while existing PHP 5 applications will continue to run, redeployment may be blocked; thus, migration to a supported runtime is strongly recommended.\u003c/p\u003e\n"],["\u003cp\u003eSecond-generation PHP runtimes offer benefits like up-to-date language features, improved portability, and reduced restrictions compared to the first generation.\u003c/p\u003e\n"],["\u003cp\u003eThere are key differences in memory and CPU usage, as well as request header handling between the first and second-generation PHP runtimes, which require adjustments to scaling configurations and application architecture.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eapp.yaml\u003c/code\u003e file structure has changed, with certain elements like \u003ccode\u003ethreadsafe\u003c/code\u003e and \u003ccode\u003eapi_version\u003c/code\u003e being deprecated, while \u003ccode\u003eentrypoint\u003c/code\u003e is a new addition, all non-static URL handlers must include \u003ccode\u003escript: auto\u003c/code\u003e to deploy successfully.\u003c/p\u003e\n"]]],[],null,["# Migrate from PHP 5.5 to the latest PHP runtime\n\nThis page covers instructions for migrating from the\n[first-generation to the second-generation](/appengine/docs/standard/runtimes)\nPHP runtimes. To upgrade your second-generation app to use the latest supported\nversion of PHP, see [Upgrade an existing application](/appengine/docs/standard/php-gen2/upgrade-php-runtime).\n\nPHP 5 has reached [end of support](/appengine/docs/standard/lifecycle/runtime-lifecycle#end_of_support)\non January 30, 2024. Your existing PHP 5 applications will continue\nto run and receive traffic. However, App Engine might block re-deployment of applications\nthat use runtimes [after their end of support date](/appengine/docs/standard/lifecycle/support-schedule#php).\nWe recommend that you migrate to the [latest supported runtime](/appengine/docs/standard/lifecycle/support-schedule#php)\nPHP runtime by using the guidelines in this page.\n\nMigrating to a supported second-generation PHP runtime lets you\nuse up-to-date language features and build apps that are more portable, with\nidiomatic code.\n\nCompatibility issues between PHP 5.5 and the second-generation PHP runtimes\n---------------------------------------------------------------------------\n\nThe official PHP documentation provides information on migrating from different\nPHP versions:\n\n- [Migrating from PHP 5.5.x to PHP 5.6.x](https://php.net/manual/en/migration56.incompatible.php)\n- [Migrating from PHP 5.6.x to PHP 7.0.x](https://php.net/manual/en/migration70.incompatible.php)\n- [Migrating from PHP 7.0.x to PHP 7.1.x](https://php.net/manual/en/migration71.incompatible.php)\n- [Migrating from PHP 7.1.x to PHP 7.2.x](https://php.net/manual/en/migration72.incompatible.php)\n- [Migrating from PHP 7.2.x to PHP 7.3.x](https://php.net/manual/en/migration73.incompatible.php)\n- [Migrating from PHP 7.3.x to PHP 7.4.x](https://php.net/manual/en/migration74.incompatible.php)\n- [Migrating from PHP 7.4.x to PHP 8.0.x](https://php.net/manual/en/migration80.incompatible.php)\n- [Migrating from PHP 8.0.x to PHP 8.1.x](https://php.net/manual/en/migration81.incompatible.php)\n\nKey differences between PHP 5.5 and the second-generation PHP runtimes\n----------------------------------------------------------------------\n\nThe following is a summary of the differences between the PHP 5.5 and the second-generation\nPHP runtimes in the App Engine standard environment:\n\n### Memory usage differences\n\nSecond-generation runtimes see a higher baseline of memory usage compared\nto first-generation runtimes. This is due to multiple factors, such as different\nbase image versions, and differences in how the two generations calculate memory\nusage.\n\nSecond-generation runtimes calculate instance memory usage as the sum of what an\napplication process uses, and the number of application files dynamically cached\nin memory. To avoid memory-intensive applications from experiencing instance\nshutdowns due to exceeding memory limits, upgrade to a larger\n[instance class](/appengine/docs/standard#instance_classes) with more memory.\n\n### CPU usage differences\n\nSecond-generation runtimes can see a higher baseline of CPU usage upon instance\ncold-start. Depending on an application's scaling configuration, this might have\nunintended side effects, such as, a higher instance count than anticipated if an\napplication is configured to scale based on CPU utilization. To avoid this\nissue, review and test application scaling configurations to ensure the number\nof instances are acceptable.\n\n### Request header differences\n\nFirst-generation runtimes allow request headers with underscores\n(e.g. `X-Test-Foo_bar`) to be forwarded to the application. Second-generation\nruntimes introduces Nginx into the host architecture. As a result of this\nchange, second-generation runtimes are configured to automatically remove\nheaders with underscores (`_`). To prevent application issues, avoid using\nunderscores in application request headers.\n\nMigrating your `app.yaml` file\n------------------------------\n\nYou must place a\n[front controller](https://wikipedia.org/wiki/Front_controller)\nto handle all routing in your application. For more information, see\n[Application startup](/appengine/docs/standard/php-gen2/runtime#app_startup).\n\nThe second-generation PHP runtimes don't allow the `script` handler element to be\ncustomized. The only valid value is `auto`, because all traffic is served using\nthe entrypoint command. All non-static URL handlers must include `script: auto`\nto deploy successfully.\n\nThe behavior of some elements in the `app.yaml` configuration file has been\nmodified:\n\nIf you use of any of the deprecated fields, there will be an error on app\ndeployment.\n\nFor more information, see the [`app.yaml` reference](/appengine/docs/standard/reference/app-yaml).\n\nReduced runtime restrictions\n----------------------------\n\nThe second-generation PHP runtimes have fewer restrictions compared to the PHP 5.5 runtime.\n\n- [Install third-party dependencies](/appengine/docs/standard/php-gen2/specifying-dependencies).\n- The runtime includes a [full filesystem](/appengine/docs/standard/php-gen2/runtime#filesystem_2).\n- Create background threads or processes that live beyond the scope of the request while the instance runs.\n- Use the [Google Cloud Client Library for PHP](https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.68.0/servicebuilder) to integrate apps with other Google Cloud services. For more information, see the [Installing the Google Cloud Client Library](/appengine/docs/standard/php-gen2/using-php-libraries) page.\n\nFor more information, see the [PHP runtime environment](/appengine/docs/standard/php-gen2/runtime).\n\nMigrate from the App Engine PHP SDK\n-----------------------------------\n\nTo reduce runtime migration effort and complexity, the App Engine standard environment lets you\n[access many of legacy bundled services and APIs in the second-generation PHP\nruntime](/appengine/docs/standard/php-gen2/services/access), such as Memcache.\nYour second-generation PHP app can call the bundled services APIs through the\nApp Engine SDK, and access most of the same capabilities as on the\nPHP 5 runtime. Not all the legacy bundled services available for PHP 5 have a\ncorresponding service in the second-generation PHP runtimes. For the full list of\nlegacy bundled services APIs available for the second-generation PHP runtimes, see the\n[legacy bundled services API references documentation](https://googlecloudplatform.github.io/appengine-php-sdk/2.1.0/index.html).\n\nYou also have the option to use Google Cloud products that offer\nsimilar capabilities as the legacy bundled services. These Google Cloud\nproducts provide idiomatic [Google Cloud CLI client library](https://github.com/googlecloudplatform/google-cloud-php).\nFor the legacy bundled services that are not available as separate products\nin Google Cloud, such as search, you can use third-party providers or\nother workarounds. To learn more about migrating to unbundled services, see\n[Migrating from bundled services](/appengine/migration-center/standard/services/migrating-services).\n\nRunning your application locally\n--------------------------------\n\nTo test your application and run it locally:\n\n1. Locally install a [version of PHP](/appengine/docs/standard/php-gen2/runtime#runtime_version)\n that corresponds to a second-generation PHP runtime\n available in the App Engine standard environment.\n\n2. Install a web server and use this to serve your app locally.\n\nFor example, start the HTTP server by running the following command: \n\n php -S localhost:8080\n\nThen, view your application in your web browser at \u003chttp://localhost:8080\u003e."]]