Amazon EC2 Tips (7) AWS SDK for PHPのテスト<その1>
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を動作させたいと思ってます。
つづく...
◆ご参考