PHPの今とこれから2007 - PHPカンファレンス2007
PHPのバージョンの変遷
主に使っているPHPのバージョンを会場に質問
- PHP5の方が若干多め
PHPカンファレンスアンケート結果
PHP5への移行
PHP4→PHP5以降のポイント
- クラスに関係する部分は変更用
- E_STRICTによる構文互換性チェック
- ZendEngine1互換モード
zend.ze1_compatibility_mode=Off
- 一部の関数の処理が非互換
PHP5.2
- stat,implode,str_replace,シャットダウンの高速化
- filter,zip,jsonエクステンション
- Win32 Apache2.2対応
PHPとセキュリティ
- Stefan Esser市が主宰
- PHPのセキュリティ強化パッチ Suhosin
- the Month of PHP Bugs (MOPB)? http://www.php-security.org/
- PHPコアジェイじゃ区政、POCコード公開(ドイツの法律で禁止?)
PHP 6.0
MySQL ND
Cycle collector
- 現在はシンプルなガーベッジコレクタを実装
- David Wang氏が「Google Summer of Code」で課題に
- リファレンスカウンティング+サイクル検知
- ez Componentsを使ったベンチマーク
- メモリ消費量は1/2〜1/22に。実行時間は拡大
- PHP6.0に採用予定。PHP5.3にも採用?
Namespace 名前空間
- 多分5.3か6.0に入ってくる
大規模サービスの開発・運用 ウノウ編 - PHPカンファレンス2007
ウノウ株式会社 尾藤正人さん
- ウノウはそんなに大規模じゃないよ(笑)
- 大規模とはいえないけど。。。
サービスの開発・運用
- ウノウの紹介
- コンシューマ向けWebサービスの開発
- BtoC
- サービスいろいろ
- エムエルじゃないよメーリスだよ
- 社員30人
サーバをたてる
自社サーバ
- 小規模or大規模
- 空調
- 場所
- 引っ越し
いろいろ面倒。
レンタルサーバー
- メリット
- 楽
- デメリット
- 拡張しづらい
ホスティング
- 中規模or大規模
- メリット
- 自由度が高い
- 設備が充実
- 安心
- デメリット
- 高い
ウノウは?
- 自社サーバ and レンタルサーバー
- ベンチャー流サーバ構築のすすめ(ハードウェア編)→はてぶ沢山
- ハードウェアを統一
- 構成を全部同じにしておくと、代替がききやすい
- フツーの筐体マシン
- エレクタに格納
- 後ろ向きで並べる
写真
サービスの始め方
- 小さく始める
- 1〜2人 1台
- 短期間で公開 1,2ヶ月が目安
- ユーザの反応を見つつ少しずつ拡張する
- 時には大きな方向転換、時にはあきらめ
大規模サービスの開発・運用 GREE編 - PHPカンファレンス2007
PHP at Yahoo - PHPカンファレンス2007
Yahoo! JAPANについて
- 2007/7月 1日13億3800万PV
- 月間アクティブ約2000万ID
OSSx独自ソフトウェア
依存関係の管理
PHP5
- PHP4の終了アナウンス
- Yahooも今年でPHP4は終了
- 現在4.4系と5.1・5.2が混在
- 日本では現時点でメインが4.4系
- 2007年末までに5系へ移行する
セキュリティ
- セキュリティ規則、開発ルールによる予防
- 個人情報の取り扱いルール
- 実装方法の指定
- 脆弱性スキャナによるチェック
- チェックリストでのリリース前確認
- プラットフォームの整備
- フィルタ拡張などの機能提供
- フェイルセーフの支店からの標準設定
php.ini設定
- open_basedirを設定
- /etc/passwd読み取りなどの攻撃を避ける
- allow_url_fopen, allow_url_include = off
- リモートファイルインクルード、オープンプロキシ攻撃を避ける
- libcurlを代わりに使用
- safe_mode = off
- これは共有ホスティング環境でのセキュリティ対策なので、off。
- display_errors = off
- エラーをブラウザ画面に表示しない
- ただしlog_errors = on でエラーはログに残す
- error_reporting = E_ALL
- すべてエラーと警告を出力
ユーザー入力のフィルタリング
- XSS SQLインジェクション攻撃
- input_filterフックを利用
- ユーザから送られたデータは一旦全てサニタイズ
- フィルタ拡張を使う
- PHP5.2.0より標準で有効(それ以前はPECLで)
フィルタ拡張
- filter_default = special_chars
- 必要な場合に限り、適切なフィルタを使ってfilter_input, filter_input_array関数でデータを取得
- filter_input関数でのデータ取得例
- 何処でどのフィルタでデータを取得しているか、ソースの検索がしやすい
- $body = filter_input(INPUT_POST, 'body', FILTER_SANITIZE_STRING);
- フィルタ拡張は万能ではない
- たとえば、stringやspecial_charsフィルタは、属性インジェクションに無力
パフォーマンス
Opcode Cacheの利用
プロファイラ・デバッガ
- xdebugをメインで利用
- WinCacheGrindやKCacheGrindで可視化
PHPエクステンションの利用
セッションの利用を避ける
Yahoo!Incの国際化対応
r3
- 今年4月にオープンソースでβ公開
フレームワークの利用
symfonyの導入
CakePHP
- 評価中の模様
- プロダクションへの投入はされていない(予定もなし)
LT モバイル開発におけるPHPの利用方法とTIPS - PHPカンファレンス2007
LT PEAR DB_DataObject開発ケーススタディ - PHPカンファレンス2007
- DBをまたくテーブル結合をサポート
LT PHPを画像を処理 - PHPカンファレンス2007
- 画像操作をするとモテる?w
- デザイナ女性多い
- 画像操作でモテモテ
- レンタルサーバーだとGD
- PHP4だと magickWandForPHPがおすすめ
- php5だと imagick2がおすすめ
- ライブラリとか敷居高かったりポリシーあったりするからBlogにコード書こうぜ
LT コード*(なにがし) - PHPカンファレンス2007
- コードについて質問回答コミュニティ
- la140でもsshでも40分待てば入れるよ
LT PHPでシェルを作る - PHPカンファレンス2007
- ウノウ株式会社尾藤さん
- PHSH
- プロンプト
- .phpsh
- デモ
- おもろい