Amazon EC2 Tips (7) AWS SDK for PHPのテスト<その1>

10 10月, 2011 (10:39) | php, クラウド | By: ohishi

AWS SDK for PHPを試してみました。

S3のバケット名を取得するだけのサンプルソースを実行しようとしただけですが、
PHPの環境を整えるのに結構苦労してしまいました。

◆環境

・Windows 2008 Server
・IIS
・PHP 5.2.17
・AWS SDK for PHP 1.4.3

◆やったこと

・IIS/PHPのインストール
・AWS SDK for PHPのインストール
・テストPHPの実行 (S3バケット名の取得)

◆IIS/PHPのインストール

・IIS/PHPのインストールは以下のサイトを参考にさせてもらった。

http://www.atmarkit.co.jp/fwin2k/verification/web200803/web200803_01.html

<主な設定ポイント>

・サーバの役割の追加画面で、Webサーバ(IIS)を追加する。その際にCGIをオンにしておく

・PHPをインストーラー版をダウンロードして実行する。

PHP 5.2 (5.2.17) Installer版 [20.24MB]  http://windows.php.net/download/ からダウンロード

・PHPのインストール先はデフォルトの [C:\Program Files\PHP] のままにする。

・Webサーバのセットアップで[IIS FastCGI]を選択する

・コンポーネントを選択で[Multi-Byte String]を選択する

・php.iniの修正箇所(C:\Program Files\PHP\php.ini)

 mbstring.substitute_character=none
 mbstring.language=Japanese
 mbstring.internal_encoding=EUC-JP
 mbstring.http_output=EUC-JP
 mbstring.http_input=auto
 mbstring.encoding_translation=On
 mbstring.detect_order=auto

 cgi.force_redirect =0
 cgi.fix_pathinfo=1
 fastcgi.impersonate =1

・IISのハンドラ・マッピングを登録しようとするが、なぜか登録されていたので省略

・動作の確認

下記の1行をphpinfo.phpのファイル名でc:\inetpub\wwwrootのフォルダに作成

<?php phpinfo(); ?>

IEでhttp://localhost/phpinfo.phpのURLを開いてみる

PHPの情報が一覧表示された。やったー

◆AWS SDK for PHPのインストール

・参考にしたのは「Amazon Web Servicesガイドブック」という本です。

・AWS SDK for PHPを下記のサイトからダウンロードする

http://aws.amazon.com/jp/sdkforphp/

・cドライブ直下に[\aws-sdk]のフォルダ作成しておく。
ダウンロードしたファイルを解凍して、[c:\aws-sdk]フォルダにコピーした。

ダウンロードしたファイルを解凍すると、sdk-1.4.3の下に同名のsdk-1.4.3サブフォルダがあるが、
コピーするファイルは、sdk-1.4.3サブフォルダ配下で、sdk.class.phpが[c:\aws-sdk]の直下になるようにする。

・php.iniのinclude_pathに下記の様にAWS SDK for PHPをインストールしたパスを指定する。

include_path = “.;c:\php\includes;c:\aws-sdk”

・c:\aws-sdk\config-sample.inc.php をコピーしてconfig.inc.phpにリネームする
そして、下記の部分に自分のアクセスキーを指定する

define(‘AWS_KEY’, ‘<公開鍵>’);
define(‘AWS_SECRET_KEY’, ‘<秘密鍵>’);

・動作確認

「Amazon Web Servicesガイドブック」を参考に、自分の使っているS3バケットを表示させてみることにする。

C:\inetpub\wwwrootにawsフォルダを作成しておく。

下記のソースをlist_buckets2.phpのファイル名でC:\inetpub\wwwroot\awsフォルダに作成する

<?php
require_once('sdk.class.php');
$s3 = new AmazonS3();
$buckets = $s3->get_bucket_list();
foreach ($buckets as $bucket){
  print($bucket . "\n");
}
?>

IEで http://localhost/aws/list_buckets2.php を開いてみる

結果:エラー

エラーといってもサーバの内部エラーとしか表示されず、何が悪いのかまったくわからない。

約2日試行錯誤してようやく解決。

このトピックの最後にエラーログ(C:\Windows\Temp\php-errors.log)をそのまんま記載したので、
参考にしてみてください。

で、修正個所は3つ

◆修正個所

・PHPを再インストールして以下の拡張機能を追加

 cURL : Webブラウザのコマンドライン版のようなものらしく、AWS SDK for PHPで使用するので必須のようです

・php.iniで下記を修正

 display_errors = On
 open_basedir = "C:\inetpub\wwwroot;c:\aws-sdk"

・config.inc.phpの下記をfalseからtrueに修正

 define('AWS_CERTIFICATE_AUTHORITY', true);

この修正で、なんとかS3バケットが表示できるようになりました。

最終的には Embarcadero RadPHP XE2で AWS SDK for PHPを動作させたいと思ってます。

つづく...

◆ご参考

Write a comment