

AWS App Runner 自 2026 年 4 月 30 日起，不再開放給新客戶。如果您想要使用 App Runner，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 PHP 平台
<a name="service-source-code-php"></a>

**重要**  
App Runner 將於 2025 年 12 月 31 日結束對 **PHP 8**.1 的支援。如需建議和詳細資訊，請參閱 [受管執行時間版本的終止支援](service-source-code.md#service-source-code.managed-platforms.eos)。

 AWS App Runner PHP 平台提供受管執行時間。您可以使用每個執行時間，根據 PHP 版本使用 Web 應用程式建置和執行容器。當您使用 PHP 執行期時，App Runner 會從受管 PHP 執行期映像開始。此映像是以 [Amazon Linux Docker 映像](https://hub.docker.com/_/amazonlinux)為基礎，並包含 PHP 版本和一些工具的執行時間套件。App Runner 使用此受管執行期映像做為基礎映像，並新增您的應用程式程式碼來建置 Docker 映像。然後，它會部署此映像，以在容器中執行您的 Web 服務。

 當您使用 App Runner 主控台或 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) API 操作[建立服務時，](manage-create.md)您可以指定 App Runner 服務的執行時間。您也可以指定執行時間做為原始程式碼的一部分。在程式碼儲存庫中包含的 [App Runner 組態檔案中](config-file.md)使用 `runtime`關鍵字。受管執行時間的命名慣例為 *<language-name><major-version>*。

如需有效的 PHP 執行期名稱和版本，請參閱 [PHP 執行期版本資訊](service-source-code-php-releases.md)。

App Runner 會在每次部署或服務更新時，將服務的執行時間更新為最新版本。如果您的應用程式需要特定版本的受管執行時間，您可以使用 [App Runner 組態檔案中](config-file.md)的 `runtime-version`關鍵字來指定它。您可以鎖定任何層級的版本，包括主要或次要版本。App Runner 只會對服務的執行時間進行較低層級的更新。

PHP 執行時間的版本語法： `major[.minor[.patch]]`

例如：`8.1.10`

以下是版本鎖定的範例：
+ `8.1` – 鎖定主要和次要版本。App Runner 只會更新修補程式版本。
+ `8.1.10` – 鎖定至特定修補程式版本。App Runner 不會更新您的執行時間版本。

**重要**  
  如果您想要在預設儲存庫根[目錄以外的位置指定 App Runner](service-source-code.md#service-source-code.source-directory) 服務的程式碼儲存庫來源目錄，您的 PHP 受管執行時間版本必須是 PHP `8.1.22`或更新版本。之前的 PHP 執行時間版本`8.1.22`只能使用預設的根來源目錄。 

**Topics**
+ [PHP 執行期組態](#service-source-code-php.config)
+ [相容性](#service-source-code-php.compatibility)
+ [PHP 執行時間範例](#service-source-code-php.examples)
+ [PHP 執行期版本資訊](service-source-code-php-releases.md)

## PHP 執行期組態
<a name="service-source-code-php.config"></a>

當您選擇受管執行時間時，您也必須至少設定建置和執行命令。您可以在[建立](manage-create.md)或[更新](manage-configure.md) App Runner 服務時設定它們。您可以使用下列其中一種方法執行此操作：
+ **使用 App Runner 主控台** – 在建立程序或組態索引標籤的設定**建置**區段中指定命令。
+ **使用 App Runner API** – 呼叫 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) 或 [UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html) API 操作。使用 [CodeConfigurationValues](https://docs.aws.amazon.com/apprunner/latest/api/API_CodeConfigurationValues.html) 資料類型的 `BuildCommand`和 `StartCommand`成員指定命令。
+ **使用[組態檔案](config-file.md)** – 在最多三個建置階段指定一或多個建置命令，以及用於啟動應用程式的單一執行命令。還有其他選用的組態設定。

提供組態檔案是選用的。當您使用主控台或 API 建立 App Runner 服務時，您可以指定 App Runner 在建立時直接從組態檔案取得您的組態設定。

## 相容性
<a name="service-source-code-php.compatibility"></a>

您可以使用下列其中一個 Web 伺服器在 PHP 平台上執行 App Runner 服務：
+ Apache HTTP Server
+ NGINX

Apache HTTP Server 和 NGINX 與 PHP-FPM 相容。您可以使用下列*NGINX*其中一項啟動 *Apache HTTP Server*和 ：
+ [監督](http://supervisord.org/introduction.html#supervisor-components/) - 如需執行 的詳細資訊*supervisord*，請參閱[執行監督](http://supervisord.org/running.html#running-supervisord)。
+ 啟動指令碼 

如需如何使用 *Apache HTTP Server* 或 *NGINX* 透過 PHP 平台設定 App Runner 服務的範例，請參閱 [完成 PHP 應用程式來源](#service-source-code-php.examples.end2end)。

### 檔案結構
<a name="service-source-code-php.compatibility.file-structure"></a>

`index.php` 必須安裝在 Web 伺服器 `root`目錄下的 `public` 資料夾中。

**注意**  
建議您將 `startup.sh`或 `supervisord.conf` 檔案存放在 Web 伺服器的根目錄中。請確定`start`命令指向存放 `startup.sh`或 `supervisord.conf` 檔案的位置。

 如果您使用的是 ，以下是 檔案結構的範例*supervisord*。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
```

如果您使用的是*啟動指令碼*，下列是檔案結構的範例。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ startup.sh
```

我們建議您將這些檔案結構存放在為 App Runner 服務指定的程式碼儲存庫[來源目錄中](service-source-code.md#service-source-code.source-directory)。

```
/<sourceDirectory>/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ startup.sh
```

**重要**  
  如果您想要在預設儲存庫根[目錄以外的位置指定 App Runner](service-source-code.md#service-source-code.source-directory) 服務的程式碼儲存庫來源目錄，您的 PHP 受管執行時間版本必須是 PHP `8.1.22`或更新版本。之前的 PHP 執行時間版本`8.1.22`只能使用預設的根來源目錄。   
App Runner 會在每次部署或服務更新時，將服務的執行時間更新為最新版本。您的服務預設會使用最新的執行時間，除非您使用 [App Runner 組態檔案中](config-file.md)的 `runtime-version`關鍵字指定版本鎖定。

## PHP 執行時間範例
<a name="service-source-code-php.examples"></a>

以下是用於建置和執行 PHP 服務的 App Runner 組態檔案範例。

### 最小 PHP 組態檔案
<a name="service-source-code-php.examples.minimal"></a>

下列範例是您可以搭配 PHP 受管執行時間使用的最小組態檔案。如需最小組態檔案的詳細資訊，請參閱 [組態檔案範例](config-file-examples.md#config-file-examples.managed)。

**Example apprunner.yaml**  

```
version: 1.0 
runtime: php81
build:
  commands:
    build:
      - echo example build command for PHP
run:
  command: ./startup.sh
```

### 擴充 PHP 組態檔案
<a name="service-source-code-php.examples.extended"></a>

下列範例使用具有 PHP 受管執行時間的所有組態金鑰。

**注意**  
這些範例中使用的執行時間版本為 *8.1.10*。您可以將其取代為您想要使用的版本。如需最新支援的 PHP 執行期版本，請參閱 [PHP 執行期版本資訊](service-source-code-php-releases.md)。

**Example apprunner.yaml**  

```
version: 1.0
runtime: php81
build:
  commands:
     pre-build:
      - scripts/prebuild.sh
    build:
      - echo example build command for PHP
    post-build:
      - scripts/postbuild.sh
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
run:
  runtime-version: 8.1.10
  command: ./startup.sh
  network:
    port: 5000
    env: APP_PORT
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
```

### 完成 PHP 應用程式來源
<a name="service-source-code-php.examples.end2end"></a>

下列範例是 PHP 應用程式原始碼，您可以使用 *Apache HTTP Server*或 來部署至 PHP 執行時間服務*NGINX*。這些範例假設您使用預設檔案結構。

#### Apache HTTP Server 使用 搭配 執行 PHP 平台 supervisord
<a name="service-source-code-php.examples.end2end.appache-supervisord"></a>

**Example 檔案結構**  
+ `supervisord.conf` 檔案可以存放在儲存庫中的任何位置。請確定`start`命令指向`supervisord.conf`檔案的存放位置。
+ `index.php` 必須安裝在 `root`目錄下的 `public` 資料夾中。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
```

**Example supervisord.conf**  

```
[supervisord]
nodaemon=true

[program:httpd]
command=httpd -DFOREGROUND
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:php-fpm]
command=php-fpm -F
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
```

**Example apprunner.yaml**  

```
version: 1.0
runtime: php81
build:
  commands:
    build:
      - PYTHON=python2 amazon-linux-extras install epel
      - yum -y install supervisor
run:
  command: supervisord
  network:
    port: 8080
    env: APP_PORT
```

**Example index.php**  

```
<html>
<head> <title>First PHP App</title> </head>
<body>
<?php
    print("Hello World!");
    print("<br>");
?>
</body>
</html>
```

#### Apache HTTP Server 使用 搭配 執行 PHP 平台 startup script
<a name="service-source-code-php.examples.end2end.appache-startupscript"></a>

**Example 檔案結構**  
+ `startup.sh` 檔案可以存放在儲存庫的任何位置。請確定`start`命令指向`startup.sh`檔案的存放位置。
+ `index.php` 必須安裝在 `root`目錄下的 `public` 資料夾中。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ startup.sh
```

**Example startup.sh**  

```
#!/bin/bash

set -o monitor

trap exit SIGCHLD

# Start apache
httpd -DFOREGROUND &

# Start php-fpm
php-fpm -F &

wait
```

**注意**  
請務必先將`startup.sh`檔案儲存為可執行檔，再將其遞交至 Git 儲存庫。使用 `chmod +x startup.sh` 設定 `startup.sh` 檔案的執行許可。
如果您未將`startup.sh`檔案儲存為可執行檔，請在您的`apprunner.yaml`檔案中輸入 `chmod +x startup.sh`作為`build`命令。

**Example apprunner.yaml**  

```
version: 1.0
runtime: php81
build:
  commands:
    build:
      - echo example build command for PHP
run:
  command: ./startup.sh
  network:
    port: 8080
    env: APP_PORT
```

**Example index.php**  

```
<html>
<head> <title>First PHP App</title> </head>
<body>
<?php
    print("Hello World!");
    print("<br>");
?>
</body>
</html>
```

#### NGINX 使用 搭配 執行 PHP 平台 supervisord
<a name="service-source-code-php.examples.end2end.nginx-supervisord"></a>

**Example 檔案結構**  
+ `supervisord.conf` 檔案可以存放在儲存庫中的任何位置。請確定`start`命令指向`supervisord.conf`檔案的存放位置。
+ `index.php` 必須安裝在 `root`目錄下的 `public` 資料夾中。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
```

**Example supervisord.conf**  

```
[supervisord]
nodaemon=true

[program:nginx]
command=nginx -g "daemon off;"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:php-fpm]
command=php-fpm -F
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
```

**Example apprunner.yaml**  

```
version: 1.0
runtime: php81
build:
  commands:
    build:
      - PYTHON=python2 amazon-linux-extras install epel
      - yum -y install supervisor
run:
  command: supervisord
  network:
    port: 8080
    env: APP_PORT
```

**Example index.php**  

```
<html>
<head> <title>First PHP App</title> </head>
<body>
<?php
    print("Hello World!");
    print("<br>");
?>
</body>
</html>
```

#### NGINX 使用 搭配 執行 PHP 平台 startup script
<a name="service-source-code-php.examples.end2end.nginx-startupscript"></a>

**Example 檔案結構**  
+ `startup.sh` 檔案可以存放在儲存庫的任何位置。請確定`start`命令指向`startup.sh`檔案的存放位置。
+ `index.php` 必須安裝在 `root`目錄下的 `public` 資料夾中。

```
/
├─ public/
│  ├─ index.php
├─ apprunner.yaml
├─ startup.sh
```

**Example startup.sh**  

```
#!/bin/bash

set -o monitor

trap exit SIGCHLD

# Start nginx 
nginx -g 'daemon off;' &

# Start php-fpm
php-fpm -F &

wait
```

**注意**  
請務必先將`startup.sh`檔案儲存為可執行檔，再將其遞交至 Git 儲存庫。使用 `chmod +x startup.sh` 設定 `startup.sh` 檔案的執行許可。
如果您未將`startup.sh`檔案儲存為可執行檔，請在您的`apprunner.yaml`檔案中輸入 `chmod +x startup.sh`作為`build`命令。

**Example apprunner.yaml**  

```
version: 1.0
runtime: php81
build:
  commands:
    build:
      - echo example build command for PHP
run:
  command: ./startup.sh
  network:
    port: 8080
    env: APP_PORT
```

**Example index.php**  

```
<html>
<head> <title>First PHP App</title> </head>
<body>
<?php
    print("Hello World!");
    print("<br>");
?>
</body>
</html>
```

# PHP 執行期版本資訊
<a name="service-source-code-php-releases"></a>

**重要**  
App Runner 將於 2025 年 12 月 31 日終止對 **PHP 8**.1 的支援。如需建議和詳細資訊，請參閱 [受管執行時間版本的終止支援](service-source-code.md#service-source-code.managed-platforms.eos)。

本主題列出 App Runner 支援的 PHP 執行時間版本的完整詳細資訊。


**支援的執行時間版本 — 原始 App Runner 組建**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/service-source-code-php-releases.html)

**注意**  
App Runner 為最近發佈的特定主要執行時間提供修訂後的建置程序。因此，您會在本文件的特定章節中看到已*修訂的 App Runner 組建*和*原始 App Runner 組建*的參考。如需詳細資訊，請參閱 [受管執行期版本和 App Runner 組建](service-source-code.md#service-source-code.build-detail)。