SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
mod_perl hacks PHP
               fonfun
           (OGATA Tetsuji)
     Twitter: @xtetsuji
        2011/12/10
•              (OGATA Tetsuji)

• Twitter: @xtetsuji
• Blog: http://post.tetsuji.jp/
•                                 (   )

•
•   Hokkaido.pm#5   mod_perl



•                          3

•           Perl          30

•       :
•               fonfun(        )
    http://www.fonfun.co.jp/
    •
        http://rmail.jp/
•               g15
    http://g15.jp/
•              fonfun(       :                    )

    •   1999
        (      :                 )

    •   2003       4                 (Perl + Apache/
        mod_perl + Oracle + Postfix)

    •
Hokkaido.pm++


•    (   )

•
Agenda
Agenda
• mod_perl
• PHP
• mod_perl Hacks PHP
 • Authen/Authz Hacks
 • Output Filter Hacks
Agenda

•
    • 20           90     →

•
•     mod_perl
mod_perl
mod_perl
• mod_perl       Perl CGI

• mod_perl             Apache
                            Perl

•       (#5)                mod_perl
    Slideshare
mod_perl

•      mod_perl2

• mod_perl1(Apache1.x)
                         …

•
PHP
PHP




http://ja.wikipedia.org/wiki/PHP:_Hypertext_Preprocessor
PHP

• IT
•       Perl Monger!!   Hokkaido.pm!!

• PHP
PHP
•               PHP



•
• Perl Monger
• PHP           (ry
PHP


•※         (   )
PHP


•※
• PHP   dis

•
PHP
• PHP           …

• PHP

•        Perl

•       …
mod_perl hacks PHP
mod_perl hacks PHP

• PHP       mod_perl



 • PHP
 • PHP           …
:mod_perl2
               PerlChildInitHandler
           PerlPostReadRequestHandler
                   PerlInitHandler
                  PerlTransHandler
            PerlMapToStorageHandler
            PerlHeaderParserHandler
                 PerlAccessHandler
                PerlAuthenHandler
                 PerlAuthzHandler
                  PerlTypeHandler
                  PerlFixupHandler
                  PerlFixupHandler
               PerlResponseHandler
                   PerlLogHandler
                PerlCleanupHandler
               PerlChildExitHandler
※Apache2                            /※
                     http://perl.apache.org/docs/2.0/user/config/config.html
Apache2 / mod_perl2




             ※ Practical mod_perl
Apache2 / mod_perl2
• Q: PHP    PerlResponseHandler
           Apache2



• A:                     (        )

 • PHP
                     ※
…
•               Apache           LL
                             …    …

    • Tomcat
    • FastCGI / mod_{    }

    •              PHP
Authen/Authz Hacks
Authen/Authz Hacks
• PHP
 • php.ini
 • PHP session_start()

•
Authen/Authz Hacks
• php.ini    session_*()
                              …

•                    Perl
                            …

    • →PHP
                            (SSO)
Cookie
Cookie
• sub handler { my $r = shift; ... }
• Raw Cookie
      HTTP::Cookies

• Apache2 (libapreq)         Apache2::Cookie
      APR::Request::Cookie
AAA
•
•3
  • PerlAccessHandler
  • PerlAuthenHandler
  • PerlAuthzHandler
CPAN Module of
Apache2::AuthCookie*
CPAN Module of
Apache2::AuthCookie*
• Apache2::AuthCookie

•     Apache2::AuthCookie



•
Output Filter Hacks
Output Filter Hacks

• PHP
• Apache
  PHP ob_*
Output Filter Hacks
•
    • PHP
                          Perl

    • i-mode   Softbank
      (Perl                      )
Output Filter

• Filter        sub handler { ... }
  $r (Request Object)
  $f (Filter Object)

• PerlOutputFilterHandler
Output Filter

<VirtualHost *:80>
 <FilesMatch “.*(html?|php)$”>
  PerlOutputFilterHandler 
      MyApache2::FilterObfuscate
 </FilesMatch>
</VirtualHost>
Output Filter
DEMO
Filter
•                                        pipe
                       Apache2.1
                  mod_filter

•                                  ”*.html”
    pipe    w3m         text/plain
Filter
• Apache     PHP
  mod_perl

• PHP
             mod_perl
• Web mod_perl
• mod_perl2
 • APR:: Apache2:: ModPerl::
• LL                   Perl
Perl


•   Perl
           Perl
Perl




http://d.hatena.ne.jp/syohex/20111110/1320938963
Perl

• WAF      Apache

•
•               mod_perl
Perl
•   mod_perl

•    mod_perl(1 and 2)



•
•          Twitter
• mod_perl2 User’s Guide
  (Onyx Neon 2007; http://modperl2book.org/)
mod_perl hacks PHP

Más contenido relacionado

Más de 鉄次 尾形

Perl入学式 2018年度の報告
Perl入学式 2018年度の報告Perl入学式 2018年度の報告
Perl入学式 2018年度の報告鉄次 尾形
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア鉄次 尾形
 
俺のこだわりデスクのその後
俺のこだわりデスクのその後俺のこだわりデスクのその後
俺のこだわりデスクのその後鉄次 尾形
 
WordPress 運用を支える Perl
WordPress 運用を支える PerlWordPress 運用を支える Perl
WordPress 運用を支える Perl鉄次 尾形
 
障害対応とその防止策
障害対応とその防止策障害対応とその防止策
障害対応とその防止策鉄次 尾形
 
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール鉄次 尾形
 
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜鉄次 尾形
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話鉄次 尾形
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか鉄次 尾形
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual鉄次 尾形
 
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論鉄次 尾形
 
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015鉄次 尾形
 
4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ鉄次 尾形
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式鉄次 尾形
 
ライフログ、時系列メモ
ライフログ、時系列メモライフログ、時系列メモ
ライフログ、時系列メモ鉄次 尾形
 
今に伝えるメールの技術 #yapcasia #yapcasiareject
今に伝えるメールの技術 #yapcasia #yapcasiareject今に伝えるメールの技術 #yapcasia #yapcasiareject
今に伝えるメールの技術 #yapcasia #yapcasiareject鉄次 尾形
 
マルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapmマルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapm鉄次 尾形
 
2014年には役に立たないセッションの昔話 #hachiojipm
2014年には役に立たないセッションの昔話 #hachiojipm2014年には役に立たないセッションの昔話 #hachiojipm
2014年には役に立たないセッションの昔話 #hachiojipm鉄次 尾形
 

Más de 鉄次 尾形 (20)

Perl入学式 2018年度の報告
Perl入学式 2018年度の報告Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
 
俺のこだわりデスクのその後
俺のこだわりデスクのその後俺のこだわりデスクのその後
俺のこだわりデスクのその後
 
Hokkaido.pmと7年
Hokkaido.pmと7年Hokkaido.pmと7年
Hokkaido.pmと7年
 
WordPress 運用を支える Perl
WordPress 運用を支える PerlWordPress 運用を支える Perl
WordPress 運用を支える Perl
 
障害対応とその防止策
障害対応とその防止策障害対応とその防止策
障害対応とその防止策
 
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
 
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual
 
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
 
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015
 
4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式
 
ライフログ、時系列メモ
ライフログ、時系列メモライフログ、時系列メモ
ライフログ、時系列メモ
 
今に伝えるメールの技術 #yapcasia #yapcasiareject
今に伝えるメールの技術 #yapcasia #yapcasiareject今に伝えるメールの技術 #yapcasia #yapcasiareject
今に伝えるメールの技術 #yapcasia #yapcasiareject
 
マルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapmマルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapm
 
2014年には役に立たないセッションの昔話 #hachiojipm
2014年には役に立たないセッションの昔話 #hachiojipm2014年には役に立たないセッションの昔話 #hachiojipm
2014年には役に立たないセッションの昔話 #hachiojipm
 

mod_perl hacks PHP

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n