Last-modified: 2010-07-09 (金) 16:15:44 (5030d)

 PHP は、「PHP: Hypertext Preprocessor」の略です。(^^;; PHPの中の「PHP」は、「Personal Home Page Tools」の略だそうです。(参照

 

PHPによるHTTP認証のフックについて

PHPにおける文字コード

  • PHPにおいては、SJISは使用すべきではないらしい。ISO-8859-*、EUC-JP、UTF-8がよいのだそうだ。
  • cf. http://www.php.net/manual/ja/ref.mbstring.php
  • 当サイトでは、MySQL DB・PHP共に文字コードはUTF-8としている。

WindowsでPHP5.3をApache2.2で利用する際のMy設定

  • PHPは、VC6 Thread Safe版を利用する。
     参考; http://php.plus-server.net/install.windows.manual.html
  • 連携用のsapiモジュールは、php5apache2_2.dll ではなく、php5apache2_2_filter.dllを利用する。
    LoadModule php5_module C:/Server/php/php5apache2_2_filter.dll
  • php.iniとphp5ts.dllファイルは、C:\Windowsではなく、PHPインストールパス(C:\Server\php)に配置し、Apacheのhttp.confでパスを指定する。
    LoadFile C:/Server/php/php5ts.dll
    PHPIniDir C:/Server/php
  • PHP用のlibmysql.dllは、MySQLサーバ側に含まれる同ファイルを利用しない。PHP5.3にはBundleされていないので、PHP5.2最新バイナリからlibmysql.dllを抽出し、Apache/binフォルダに配置する。

WindowsでPHP5.3をApache2.2で利用する際の問題

  • Apache2.2のWindows版として配布されているバイナリはWinNT MPM動作
  • winsock2の問題で、Win32DisableAcceptExを設定する必要がある。(Microsoftは修正する気がないらしい)
  • 設定すると、"Disabled use of AcceptEx() WinSock2 API"文言で、Windowsのイベントログ(Application)にerrorログが、Apache起動時のerror.logにnoticeログが記録される。
  • また、なんらかのメモリリークが発生するらしく、限界を超えると、Fatalエラーが発生し、Apache2の子プロセスが自動再起動してしまう。

addslashes()関数を使った場合の不具合

  • SQLインジェクション対策として、addslashes()関数を使っているPHPアプリケーションでは、DBインサート時に、0x005cを含む全角文字に'\'が付加してしまうことがある。(参考:'\'(0x005c)による文字化け) 例:「表」-> 「表\」
  • ほとんどの場合は、magic_quotes_gpc=on 設定のために、エスケープ処理を2重にしてるからだそうな…。うちもそうでした。(^^;;

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS