whoami
• 大須賀 義浩
• PHPエンジニア@株式会社 Loco Partners
• twitter @oh_sky
• facebook http://fb.com/ohsky
第1話
PaaSは誰が為に
かつてのPHP
どのレンタルサーバでも使用できる
お手軽なWeb開発言語
最近のPHP
PaaSでは対応をあとまわしにされがち
冷遇されている感
AWS Lambda
• Node.js, Java, Pythonのコードをアップロードする
だけで実行できるPaaS的なサービス
• イベント駆動
• オートスケール
• リクエスト回数・実行時間(/100ms)で課金
AWS Lambdaで使用できる言語
• Node.js, Python, Java
• Amazon Linuxでサポートされている言語(?)
第2話
サポート言語のなぞ
例えば、perlコマンドを呼び出してperlのスクリプトを実行可能
http://oh-sky.hatenablog.com/entry/2015/10/19/010516
Perl は使える
PHPは使えない
その他
FAQにはGo, Rubyを使用できると書いてあるが、
その他、sh, bash, awk, luaなどが使えた
使える言語は他にもありそう
(PHPは無かったが)
第3話
AWS Lambdaの愛し方
AWS Lambdaで
PHPは使えないのか
• PHPコマンドをアップロードすれば良い
• Linux用のパッケージからPHPコマンドを拝借する
• あるいは自分でコンパイルしたPHPをアップロード
する
AWS LambdaでPHPを動かす
├── index.js
├── script.sh
├── hello.php
├── php/
│   ├── php
│   └── php.ini
└── lib/
   ├── libicudata.so.50
   ├── libicui18n.so.50
   ├── libicuio.so.50
   └── libicuuc.so.50
exports.handler = function(event, context) {
var exec = require('child_process').exec;
exec('sh script.sh', function (error, stdout, stderr) {
if(stdout){
console.log('stdout: ' + stdout);
}
if(stderr){
console.log('stderr: ' + stderr);
}
if (error !== null) {
console.log('Exec error: ' + error);
}
context.succeed(stdout);
});
};
Node.jsからシェルスクリプトを起動する
AWS LambdaでPHPを動かす
├── index.js
├── script.sh
├── hello.php
├── php/
│   ├── php
│   └── php.ini
└── lib/
   ├── libicudata.so.50
   ├── libicui18n.so.50
   ├── libicuio.so.50
   └── libicuuc.so.50
<script.sh>
#!/bin/sh
export LD_LIBRARY_PATH=`pwd`/lib:
$LD_LIBRARY_PATH
./php/php hello.php
<hello.php>
<?php
echo "PHP Version:" . PHP_VERSION . "n";
echo "Hello world.n";
共有ライブラリのPATHを通す
第6話
手作りのぬくもり
AWS LambdaでPHPを動かす
├── index.js
├── script.sh
├── hello.php
├── php/
│   ├── php
│   └── php.ini
└── lib/
   ├── libicudata.so.50
   ├── libicui18n.so.50
   ├── libicuio.so.50
   └── libicuuc.so.50
./configure 
--prefix=/var/task/php 
--disable-all 
--enable-intl 
--enable-mbstring 
--enable-json 
--enable-session 
--enable-pdo 
--with-sqlite=shared 
--with-openssl 
&& make
php.ini を読み込めるように
オプションは
お好みで
(これらはCakePHP3を動かしたくて
付けたオプション)
AWS LambdaでPHPを動かす
├── index.js
├── script.sh
├── hello.php
├── php/
│   ├── php
│   └── php.ini
└── lib/
   ├── libicudata.so.50
   ├── libicui18n.so.50
   ├── libicuio.so.50
   └── libicuuc.so.50
configureオプションによって
必要となるライブラリはここに置く。
これらは--enable-intlを付けたため必要。
このディレクトリへのライブラリPATHは、
script.sh で設定済み。
AWS LambdaでPHPを動かす
$ zip -r hello-php.zip index.js lib php script.sh hello.php
zipにまとめてアップロード
実行
まとめ
• AWS LambdaでPHPを使えないことはない
• 公式でサポートしてほしい
• せっかくPHPが動いたので、Webアプリケーション
を動かしたい
次回
AWS Lambdaは
PHP Web APPの夢を見るか?
http://lmn.connpass.com/event/23001/
2015/11/27 20:00 On Air

PHPという概念が存在しない退屈な世界