

 AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에 대한 PHP 자습서 AWS Cloud9
<a name="sample-php"></a>

이 자습서를 사용하면 AWS Cloud9 개발 환경에서 일부 PHP 스크립트를 실행할 수 있습니다.

이 자습서를 따르고 이 샘플을 생성하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 Amazon EC2 및 Amazon S3 같은 서비스에 대한 발생할 수 있는 요금이 포함됩니다. 자세한 내용은 [Amazon EC2 요금](https://aws.amazon.com/ec2/pricing/) 및 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

**Topics**
+ [사전 조건](#sample-php-prereqs)
+ [1단계: 필수 도구 설치](#sample-php-install)
+ [2단계: 코드 추가](#sample-php-code)
+ [3단계: 코드 실행](#sample-php-run)
+ [4단계: 설치 및 구성 AWS SDK for PHP](#sample-php-sdk)
+ [5단계: AWS SDK 코드 추가](#sample-php-sdk-code)
+ [6단계: AWS SDK 코드 실행](#sample-php-sdk-run)
+ [7단계: 정리](#sample-php-clean-up)

## 사전 조건
<a name="sample-php-prereqs"></a>

이 샘플을 사용하기 전에 설정이 다음 요구 사항을 충족하는지 확인하세요.
+ **기존 AWS Cloud9 EC2 개발 환경이 있어야 합니다.** 이 샘플에서는 Amazon Linux 또는 Ubuntu 서버를 실행 중인 Amazon EC2 인스턴스에 연결된 EC2 환경이 이미 있다고 가정합니다. 다른 환경 또는 운영 시스템이라면 이 샘플 지침을 관련 도구를 설치하는 데에 적용해야 합니다. 자세한 내용은 [에서 환경 생성 AWS Cloud9](create-environment.md) 단원을 참조하십시오.
+ **기존 환경의 AWS Cloud9 IDE가 이미 열려 있습니다.** 환경을 열면가 웹 브라우저에서 해당 환경의 IDE를 AWS Cloud9 엽니다. 자세한 내용은 [에서 환경 열기 AWS Cloud9](open-environment.md) 단원을 참조하십시오.

## 1단계: 필수 도구 설치
<a name="sample-php-install"></a>

이 단계에서는 이 샘플을 실행할 때 필요한 PHP를 설치합니다.

**참고**  
다음 절차에서는 PHP만 설치합니다. Apache 웹 서버 및 MySQL 데이터베이스와 같은 관련 도구를 설치하려면 *Amazon EC2 사용 설명서*에서 [자습서: Amazon Linux에 LAMP 웹 서버 설치](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html)를 참조하세요.

1.  AWS Cloud9 IDE의 터미널 세션에서 ** `php --version` ** 명령을 실행하여 PHP가 이미 설치되어 있는지 확인합니다. (터미널 세션을 새로 시작하려면 메뉴 모음에서 **Window(창)**, **New Terminal(새 터미널)**을 선택합니다.) 성공할 경우, PHP 버전 숫자를 포함해 출력값이 생성됩니다. PHP가 설치된 경우 [2단계: 코드 추가](#sample-php-code)로 이동합니다.

1. **`yum update` **명령(Amazon Linux) 또는** `apt update` **명령(Ubuntu Server)을 실행하여 최신 보안 업데이트와 버그 수정이 설치되어 있는지 확인합니다.

   Amazon Linux 2 및 Amazon Linux의 경우:

   ```
   sudo yum -y update
   ```

   Ubuntu Server:

   ```
   sudo apt update
   ```

1. **`install` **명령을 실행하여 PHP를 설치합니다.

   대상 Amazon Linux 2:

   ```
   sudo amazon-linux-extras install -y php7.2
   ```

   Amazon Linux의 경우:

   ```
   sudo yum -y install php72
   ```
**참고**  
다음 명령을 사용하여 Amazon Linux 버전을 볼 수 있습니다.  

   ```
   cat /etc/system-release
   ```

   Ubuntu Server:

   ```
   sudo apt install -y php php-xml
   ```

   자세한 내용은 PHP 웹 사이트에서 [설치 및 구성](http://php.net/manual/en/install.php)을 참조하세요.

## 2단계: 코드 추가
<a name="sample-php-code"></a>

 AWS Cloud9 IDE에서이 콘텐츠가 포함된 파일을 생성하고 이름이 인 파일을 저장합니다`hello.php`. (파일을 생성하려면 메뉴 모음에서 [**파일(File)**], [**새 파일**]을 선택합니다. 파일을 저장하려면 [**파일(File)**], [**저장(Save)**]을 선택하고 [**파일 이름(Filename)**]에 `hello.php`을 입력한 다음 [**저장(Save)**]을 선택합니다.)

```
<?php
  print('Hello, World!');

  print("\nThe sum of 2 and 3 is 5.");

  $sum = (int)$argv[1] + (int)$argv[2];

  print("\nThe sum of $argv[1] and $argv[2] is $sum.");
?>
```

**참고**  
위의 코드는 외부 파일에 종속되지 않습니다. 그러나 파일에 다른 PHP 파일을 포함하거나 요구하는 경우 해당 파일을 사용하여 입력할 때 코드 완성을 수행 AWS Cloud9 하려면 **기본 설정**에서 **프로젝트, PHP 지원, PHP 코드 완성 설정 활성화**를 켠 다음 해당 파일의 경로를 **프로젝트, PHP 지원, PHP 완성 포함 경로** 설정에 추가합니다. (기본 설정을 보고 변경하려면 메뉴 모음에서 **AWS Cloud9, Preferences**(기본 설정)를 선택합니다.)

## 3단계: 코드 실행
<a name="sample-php-run"></a>

1.  AWS Cloud9 IDE의 메뉴 모음에서 **실행**, **실행 구성**, **새 실행 구성을** 선택합니다.

1. [**[새로 만들기] - 유휴([New] - Idle)**] 탭에서 [**러너: 자동(Runner: Auto)**]을 선택한 다음 [**PHP(cli)**]를 선택합니다.

1. **명령**에 `hello.php 5 9`를 입력합니다. 코드에서 `5`는 `$argv[1]`를 나타내고 `9`는 `$argv[2]`를 나타냅니다. (`$argv[0]`는 파일의 이름(`hello.php`)을 나타냅니다.)

1. **Run(실행)** 버튼을 선택하여 출력값을 비교합니다.

   ```
   Hello, World!
   The sum of 2 and 3 is 5.
   The sum of 5 and 9 is 14.
   ```

![\[AWS Cloud9 IDE에서 PHP 코드 실행 출력\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-php-simple.png)


## 4단계: 설치 및 구성 AWS SDK for PHP
<a name="sample-php-sdk"></a>

이 샘플을 개선하여 AWS SDK for PHP 를 사용하여 Amazon S3 버킷을 생성하고 사용 가능한 버킷을 나열한 다음 방금 생성한 버킷을 삭제할 수 있습니다.

이 단계에서는 PHP 코드에서 Amazon S3와 같은 AWS 서비스와 상호 작용하는 편리한 방법을 AWS SDK for PHP제공하는를 설치하고 구성합니다. 를 설치하려면 먼저 [Composer](https://getcomposer.org/)를 설치 AWS SDK for PHP해야 합니다. 를 설치 AWS SDK for PHP한 후에는 환경에서 자격 증명 관리를 설정해야 합니다. 는 AWS 서비스와 상호 작용하기 위해 이러한 자격 증명이 AWS SDK for PHP 필요합니다.

### Composer를 설치하려면
<a name="sample-php-sdk-install-composer"></a>

자동(`-s`) 및 오류 표시(`-S`) 옵션을 사용하여** `curl` **명령을 실행하고, Composer 설치 관리자를 `composer.phar`(명명 규칙에 따른 이름)이라는 PHP 아카이브(PHAR) 파일로 파이핑합니다.

```
curl -sS https://getcomposer.org/installer | php
```

### 를 설치하려면 AWS SDK for PHP
<a name="sample-php-sdk-install-sdk"></a>

Ubuntu Server의 경우, Composer가 AWS SDK for PHP를 설치하는 데 필요한 추가 패키지를 설치합니다.

```
sudo apt install -y php-xml php-curl
```

Amazon Linux 또는 Ubuntu Server의 경우 **php** 명령을 사용하여 Composer 설치 관리자를 실행하여 AWS SDK for PHP를 설치합니다.

```
php composer.phar require aws/aws-sdk-php
```

이 명령은 사용자 환경에 여러 폴더와 파일을 만듭니다. 사용할 주 파일은 `autoload.php`이고 환경의 `vendor` 폴더에 있습니다.

**참고**  
설치 후 Composer는 추가 종속 구성 요소를 설치하도록 제안할 수 있습니다. 설치할 종속 구성 요소 목록을 지정하고 다음과 같은 명령을 사용하여 아룰 수행할 수 있습니다. 예를 들어 다음 명령은 종속 구성 요소의 다음 목록을 설치하도록 Composer에 지시합니다.  

```
php composer.phar require psr/log ext-curl doctrine/cache aws/aws-php-sns-message-validator
```

자세한 내용은 *AWS SDK for PHP 개발자 가이드*에서 [설치](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/installation.html)를 참조하세요.

### 환경에서 보안 인증 관리를 설정하려면
<a name="sample-php-sdk-creds"></a>

를 사용하여 AWS 서비스를 호출 AWS SDK for PHP 할 때마다 호출과 함께 자격 증명 세트를 제공해야 합니다. 이러한 자격 증명은에 해당 호출을 수행할 수 AWS SDK for PHP 있는 적절한 권한이 있는지 여부를 결정합니다. 자격 증명으로 적절한 권한이 확인되지 않는 경우 호출이 실패합니다.

이 단계에서는 환경 내에서 자격 증명을 저장합니다. 이렇게 하려면 [AWS 서비스 의 환경에서 호출 AWS Cloud9](credentials.md) 섹션의 지침을 수행한 다음 이 주제로 돌아옵니다.

자세한 내용은 *AWS SDK for PHP 개발자 가이드*에서 [기본 사용법](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/basic-usage.html)의 ‘클라이언트 생성’ 섹션을 참조하세요.

## 5단계: AWS SDK 코드 추가
<a name="sample-php-sdk-code"></a>

이 단계에서는 몇 가지 코드를 더 추가합니다. 이번 경우에는 Amazon S3와 상호 작용하기 위한 것이며 버킷을 생성하고 사용 가능한 버킷을 나열한 다음 막 생성한 버킷을 삭제합니다. 이 코드를 나중에 실행합니다.

 AWS Cloud9 IDE에서이 콘텐츠가 포함된 파일을 생성하고 이름이 인 파일을 저장합니다`s3.php`.

```
<?php
require './vendor/autoload.php';

if ($argc < 4) {
    exit("Usage: php s3.php <the time zone> <the bucket name> <the AWS Region to use>\n" .
        "Example: php s3.php America/Los_Angeles my-test-bucket us-east-2");
}

$timeZone = $argv[1];
$bucketName = $argv[2];
$region = $argv[3];

date_default_timezone_set($timeZone);

$s3 = new Aws\S3\S3Client([
    'region' => $region,
    'version' => '2006-03-01'
]);

# Lists all of your available buckets in this AWS Region.
function listMyBuckets($s3)
{
    print("\nMy buckets now are:\n");

    $promise = $s3->listBucketsAsync();

    $result = $promise->wait();

    foreach ($result['Buckets'] as $bucket) {
        print("\n");
        print($bucket['Name']);
    }
}

listMyBuckets($s3);

# Create a new bucket.
print("\n\nCreating a new bucket named '$bucketName'...\n");

try {
    $promise = $s3->createBucketAsync([
        'Bucket' => $bucketName,
        'CreateBucketConfiguration' => [
            'LocationConstraint' => $region
        ]
    ]);

    $promise->wait();
} catch (Exception $e) {
    if ($e->getCode() == 'BucketAlreadyExists') {
        exit("\nCannot create the bucket. " .
            "A bucket with the name '$bucketName' already exists. Exiting.");
    }
}

listMyBuckets($s3);

# Delete the bucket you just created.
print("\n\nDeleting the bucket named '$bucketName'...\n");

$promise = $s3->deleteBucketAsync([
    'Bucket' => $bucketName
]);

$promise->wait();

listMyBuckets($s3);

?>
```

## 6단계: AWS SDK 코드 실행
<a name="sample-php-sdk-run"></a>

1.  AWS Cloud9 IDE의 메뉴 모음에서 **실행**, **실행 구성**, **새 실행 구성을** 선택합니다.

1. [**[새로 만들기] - 유휴([New] - Idle)**] 탭에서 [**러너: 자동(Runner: Auto)**]을 선택한 다음 [**PHP(cli)**]를 선택합니다.

1. **명령**에 `s3.php America/Los_Angeles my-test-bucket us-east-2`을 입력합니다.
   +  `America/Los_Angeles`는 기본 시간대 ID입니다. 더 많은 ID를 보려면 PHP 웹 사이트에서 [지원되는 시간대 목록](http://php.net/manual/en/timezones.php)을 참조하세요.
   +  `my-test-bucket`은 생성한 다음 삭제하려는 버킷 이름입니다.
**참고**  
Amazon S3 버킷 이름은 계정 AWS 뿐만 AWS아니라 여러 계정에서 고유해야 합니다.
   +  `us-east-2`는 버킷을 생성하려는 AWS 리전의 ID입니다. 더 많은 ID는 **Amazon Web Services 일반 참조의 [Amazon Simple Storage Service(Amazon S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)를 참조하세요.

1. **Run(실행)** 버튼을 선택하여 출력값을 비교합니다.

   ```
   My buckets now are:
   
   Creating a new bucket named 'my-test-bucket'...
   
   My buckets now are:
   
   my-test-bucket
   
   Deleting the bucket named 'my-test-bucket'...
   
   My buckets now are:
   ```

## 7단계: 정리
<a name="sample-php-clean-up"></a>

이 샘플 사용을 완료한 후 AWS 계정에 지속적인 요금이 부과되지 않도록 하려면 환경을 삭제해야 합니다. 지침은 [에서 환경 삭제 AWS Cloud9](delete-environment.md) 섹션을 참조하세요.

### 용 PHP 러너 관련 문제 해결 AWS Cloud9
<a name="sample-php-troubleshooting"></a>

PHP CLI 러너에서 문제가 발생하는 경우, 러너가 PHP로 설정되어 있고 디버거 모드가 활성화되어 있는지 확인해야 합니다.