LoginSignup
2
2

More than 3 years have passed since last update.

EC2でCloudFront署名付きURL発行用PHPを実行しようとして躓いた話

Last updated at Posted at 2021-02-19

【やりたいこと】

CloudFront署名付きURLを発行したい

参考:【初心者向け】CloudFrontで署名付きURLを発行する【やってみた】

【環境】

AmazonLinux2のEC2インスタンスを作成して、PHPをインストール

参考:AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順

【やったこと】

Composerをインストール
参考:AWS SDK for PHPバージョン 3 のインストール

署名付きURL作成用の「test.php」は
【初心者向け】CloudFrontで署名付きURLを発行する【やってみた】
のphpファイルを元に作成しています。

# cd /usr/local/bin
# curl -s https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.0.9) successfully installed to: /usr/local/bin/composer.phar
Use it: php composer.phar

# ll
total 2164
-rwxr-xr-x 1 root root 2205196 Feb 18 16:33 composer.phar
-rwxrwxrwx 1 root root      31 Feb 18 16:28 test.php

# ./composer.phar require aws/aws-sdk-php
Using version ^2.8 for aws/aws-sdk-php
./composer.json has been created
Running composer update aws/aws-sdk-php
Loading composer repositories with package information
Updating dependencies
Lock file operations: 3 installs, 0 updates, 0 removals
  - Locking aws/aws-sdk-php (2.8.31)
  - Locking guzzle/guzzle (v3.9.3)
  - Locking symfony/event-dispatcher (v2.8.52)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Downloading symfony/event-dispatcher (v2.8.52)
  - Downloading guzzle/guzzle (v3.9.3)
  - Downloading aws/aws-sdk-php (2.8.31)
  - Installing symfony/event-dispatcher (v2.8.52): Extracting archive
  - Installing guzzle/guzzle (v3.9.3): Extracting archive
  - Installing aws/aws-sdk-php (2.8.31): Extracting archive
7 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package guzzle/guzzle is abandoned, you should avoid using it. Use guzzlehttp/guzzle instead.
Generating autoload files

【躓いたこと】

エラーメッセージ

# php test.php
PHP Fatal error:  Class 'Aws\Sdk' not found in /usr/local/bin/test.php on line 22

# ls ./vendor/aws/aws-sdk-php/src/Sdk.php
ls: cannot access ./vendor/aws/aws-sdk-php/src/Sdk.php: No such file or directory

「Aws¥Sdk」クラスがないらしい

(原因を探すこと半日……)

ここに正解があった
バージョン 2 からのアップグレードAWS SDK for PHP

SDK バージョン 3 から
主な相違点:
Aws\Common\Aws ではなく Aws\Sdk クラスを使用します。

よく見たらAWS SDK for PHP 2がインストールされてますね……。

Installing aws/aws-sdk-php (2.8.31): Extracting archive

【解決方法】

AWS SDK for PHP 3をインストールしたい。

AWS SDK for PHPバージョン 3 の要件と推奨事項

PHP 拡張機能AWS SDK for PHPを有効にした PHP バージョン 5.5.0 以降を使用する必要があります。

# php -v
PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:05)

AmazonLinux2に入っているPHPは5.4なので、バージョンアップをしなければならない

参考:Amazon Linux 2でPHP7.2をインストールする

# yum remove php php-*

# amazon-linux-extras install php7.2
# yum install php php-mbstring

AWS SDK for PHP 2を消して3をインストール

# rm -rf ./vendor
# vi composer.json
# cat composer.json
{
    "require": {
        "aws/aws-sdk-php": "3.*"
   }
}

# php composer.phar install
# php composer.phar update

# ls ./vendor/aws/aws-sdk-php/src/Sdk.php
./vendor/aws/aws-sdk-php/src/Sdk.php

# php test.php
https://xxxxxx.cloudfront.net/index.html?Expires=xxxxxxxxxxxxxxxxxxxx

動いた!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2