Home > PHP

PHP Archive

PHP4.4.4/PHP5.1.5リリース

  • 2006-08-18 (金)
  • PHP
この記事の所要時間: 351

PHP4.4.4/PHP5.1.5がリリースされています。

セキュリティ フィックス&バグフィックスリリースのようです。

PHP5.1.5 Release Announcement
PHP4.4.4 Release Announcement

勉強がてらChangeLogを翻訳してみました。
# 誤訳・間違いがあったら教えて下さい。

    PHP4.4.4 ChangeLog

  • 64bitシステムでのmemory_limit修正
  • 64bitシステムでのstr_repeat()・wordwrap()のオーバーフロー修正
  • open_basedirかsafe_mode有効時にcurlのCURLOPT_FOLLOWLOCATIONを無効化
  • 不正なforeach()によるメモリ破壊を修正
  • #38431のバグ修正 (xmlrpc_get_type()がPHPをクラッシュする)
  • #38377のバグ修正 (session_regenerate_id()後のsession_destroy()でwarningが発生する)
  • #38322のバグ修正 (ssancf()の引数読み込みが任意のコード実行を引き起こす)
  • #38278のバグ修正 (session_cache_expire()の値がphpinfoのsessioncache_expireと一致しない)
  • #38251のバグ修正 (socket_select()と不正な引数)
  • #38183のバグ修正 (disable_classes=FoobarがFooクラスを無効にする)
  • #38112のバグ修正 (壊れたGIFがsegfaults)
  • #37265のバグ修正 (imap_body()のsafe_mode & open_basedirチェックを追加)
  • #29538のバグ修正 (number_formatの0問題)
    PHP5.1.5 ChangeLog

  • 64bitシステムでのmemory_limit修正 (Stefan E.)
  • 64bitシステムでのstr_repeat()・wordwrap()のオーバーフロー修正 (Stefan E.)
  • open_basedirかsafe_mode有効時にcurlのCURLOPT_FOLLOWLOCATIONを無効化 (Stefan E., Ilia)
  • #38322のバグ修正(ssancf()の引数読み込みが任意のコード実行を引き起こす) (Tony)
  • #38125のバグ修正(spl_dual_it_free_storageへの未定義参照) (Marcus)
  • #38112のバグ修正(壊れたGIFがsegfaults) (Pierre)
  • #37587のバグ修正(属性なしのがsegfaultを起こす) (Marcus)
  • #37576のバグ修正(FastCGI env (cgi vars) テーブルオーバーフロー) (Piotr)
  • #37496のバグ修正(FastCGIの出力がバッファオーバーラン) (Piotr, Dmitry)
  • #37487のバグ修正(oci_fetch_array()の配列型は常にOCI_BOTHをデフォルト) (Tony)
  • #37416のバグ修正(iterator_to_array()がrewind()メソッド内の例外を隠す) (Tony)
  • #37392のバグ修正(リクエストの最後に不必要なOCITransRollback()を呼ぶ) (Tony)
  • #37341のバグ修正($_ENVが使われると、インクルードされたファイル内で$_SERVERの2つのエントリが削られ) (Dmitry)
  • #37313のバグ修正(sigemptyset()がインクルードせずに使用される) (jdolecek)
  • #37346のバグ修正(無効なカラーマップフォーマット) (Pierre)
  • #37360のバグ修正(無効なGIFサイズ) (Pierre)
  • #37306のバグ修正(max_execution_time = max_input_time) (Dmitry)
  • #37278のバグ修正(SOAPが__soapCallのuriを参照しない) (Dmitry)
  • #37265のバグ修正(imap_body()のsafe_mode & open_basedirチェックを追加) (Ilia)
  • #37256のバグ修正(php-fastcgiがハンドルコネクションを中止しない) (Dmitry)

CakePHP – validate

この記事の所要時間: 141

CakePHPでのvalidateネタ。

validateは入力チェック正規表現をmodelの$validateに配列で設定しておくだけなんだけど、メールアドレスの重複チェックなんかはそのままではどうにもできない。

modelの$validateに正規表現ではなく、(入力チェック)メソッド名を入れとけばそれを呼んでくれたりするのかな、と思ったがそれはナシ。
マニュアルではcontrollerで重複チェックを行う方法が載っているだが、正規表現でのチェックはmodelにあるので一緒にmodel内に書きたいところ。

で、考えたのが以下の3つの方法。

  1. model#beforeValidate()に書く
    正規表現での入力チェックより先に呼ばれてしまう。
    一意チェックなんかではDBアクセスが発生するから正規表現でのチェックを通過したものだけ処理を行う方が良い。
  2. model#validates()に書く
    parent::validates()を呼んでから、独自入力チェックを書く。
    validates()内に入力チェックが集約されるからよさげ。
    ただparent::validate()を忘れると正規表現での入力チェックが呼ばれなくなる。
  3. model#beforeSave()に書く
    validates()の後に呼ばれるので正規表現での入力チェックを通過した際のみ呼ばれる。

どの方法でもいちおう動作はするが、1.はイマイチなんで、2.か3.のどちらか。
メソッドの意味的には2.が良いかな。

メモ:

入力エラー時に↓みたいにinvalidate()を呼ぶのだが、引数に注意。

$this->invalidate('username');

この値は単にviewでtagErrorMsg()を呼ぶときに使用するものなのでmodel(DB)のフィールド名(カラム名)と合わせる必要は無いんで。(ちょっとハマッた)

CakePHP

この記事の所要時間: 031

CakePHPイイ!!
PHPらしく(スクリプト言語らしく)柔軟なつくりになっていて面白い。
フレームワークにありがちな設定ファイル書きまくりとか無いしね。

RonRを筆頭に規則を決めておいてそのとおりに記述しておけば
あとはフレームワークが良きに計らってくれるのは良くできてるなあと思う。

今マニュアルをざっと見ていってるんだけど
仕組みが分かるとホント楽しい。
# 最近のフレームワークはチュートリアルとかドキュメントが充実してて
# これもスゴイと思う。

これ使って何作ろうかなー。

PHPフレームワーク

  • 2006-08-09 (水)
  • PHP
この記事の所要時間: 221

自社サービス構築に使うPHPフレームワークを探し中。

RonR登場以来、それの影響を受けたフレームワークが多いんだけど
実際に実務で採用されているフレームワークってあるんかな。
一時mojaviが話題になっていたが、最近あまり聞かないし。

周りでもPEAR・Smartyは使っている人がいるようだけど
公開されているフレームワークを使っている話は聞かない。

今のところ気になっているのは以下。

  • guesswork-classic[PHP4]
    国産の軽量フレームワーク。シンプルな作りになっているので理解しやすい。
    1アクションに対して1メソッドというのは直感的にも分かりやすいね。
    業務で使ってみたかったのだが残念ながら機会が無かった。
    現在開発が止まっている様子。
  • Ethna[PHP4]
    GREEで採用されているフレームワーク。
    やはり実際に公開サイトで稼働しているのは安心かな。
    国産フレームワークなので日本語の情報が多いのも有り難いし。
  • mojavi2[PHP4]/mojavi3[PHP5]
    一時もてはやされたPHPフレームワークの雄。
    これの登場を機にPHPにフレームワークを、という気運が高まってきた。
    少し試してみたがJava系のフレームワークの影響を強く受けているので
    PHPで使うには重い気がする。
    雑誌なんかでは実際に業務で採用されている記事を見たので
    業務システムでの事例はいくつかあるようだ。
    現在は開発が止まってしまったようだ。
    (mojaviから分離したagaviが後継になっているみたい)
  • symfony[PHP5]
    RonRの影響を受けたフレームワーク。RonRをそのままPHPに移植したイメージ。
    ざっと試した感じでコードジェネレータとかは面白いんだけど
    設定ファイル(yaml)がちとうっとおしいかも。
    開発が活発に行われており今後が楽しみ。
  • CakePHP[PHP4/5]
    こちらもRonRの影響を受けたフレームワーク。PHP4/5のどちらでも動作する。
    簡単なCRUD画面を作るにあたってyamlやxmlといった設定ファイルは不要だ。
    今調査中なのだが、さくっと作るには良い感じ。
    こちらも開発が活発に行われているようだ。
  • ZendFrameword[PHP5]
    PHPの開発元Zendが作成しているフレームワーク。
    まだ試していないが、Zend公式フレームワークなだけに今後の本命になるかも。

Web系のサービスでは同じような処理が多いから
フレームワーク上での実装パターンを作っていきたいな。

# ちなみに1×1のお客様向けシステムではこれまでの資産の兼ね合いもあって
# 独自フレームワークを使ってます。

PHP4.4.3リリース

  • 2006-08-04 (金)
  • PHP
この記事の所要時間: 234

PHP4.4.3がリリースされてますね。
例によってバグフィックス版のようです。

勉強がてらにChangeLogを翻訳してみました。
# 誤訳・間違いがあったら教えて下さい。

    PHP4.4.3 ChangeLog

  • *cURLエクステンション:open_basedir/safe_modeチェックにコントロールコードチェックを追加
  • *wordwrap():オーバーフローチェック追加
  • *session:セッション名に特殊キャラクターチェック追加
  • *error_log():safe_modeチェックを改良
  • *PCRE:バージョン6.6へアップグレード
  • *tempnam():極端に長いパス名のハンドリングを修正
  • *phpinfo():長い入力のXSS修正
  • *create_named_pipe():バッファオーバーフロー修正(Win32用libmysql.c)
  • *#37720のバグ修正 (DirectoryMatch / VirtualHost使用時にmerge_php_configの値がごちゃごちゃになる)
  • *#37569のバグ修正 (WDDXで上位キャラクターが間違ってエンコードされる)
  • *#37510のバグ修正 (session_regenerate_id()後のsession_id()で変更後のセッションID取得に失敗する)
  • *#37360のバグ修正 (壊れたGIFでメモリーエラーになる)
  • *#37348のバグ修正 (PEARインストールでopenbase_dir()が無視される)
  • *#37346のバグ修正 (無効なカラーマップフォーマットを使うとクラッシュする。)
  • *#37162のバグ修正 (WDDXを共有エクステンションでビルドできない)
  • *#37046のバグ修正 (foreachにstatic scopeの入れ子の配列を渡すと壊れる)
  • *#37045のバグ修正 (HTTPリダイレクトの特殊キャラクターチェックを修正)
  • *#36857のバグ修正 (HTTPストリームラッパーにPartial Contentを追加)
  • *#36776のバグ修正 (node_list_wrapper_dtor segfault)
  • *#36459のバグ修正 (\r\nが含まれたリンクに不正なPHPSESSIDを追加していた)
  • *#36458のバグ修正 (sleep()が負の値を受け入れていた)
  • *#36242のバグ修正 (stream_select()内でメモリ破壊が可能だった)
  • *#36223のバグ修正 (curlがopen_basedirをすり抜けていた)
  • *#36205のバグ修正 (2重クッキーでメモリーリークが発生していた)
  • *#36148のバグ修正 (unpack(“H*hex”, $data)が余計なキャラクターを文字列の最後に付加していた)
  • *#36017のバグ修正 (fopen()でURLを開くとPHPがクラッシュする)

ming インストール2

  • 2006-08-03 (木)
  • PHP
この記事の所要時間: 045

mingインストール続き。

その後調べてみると最近のPHPならばming用コードはPHPのソースに含まれている事が分かった。
なのでmingをインストールしておき、PHPインストール時の./configureに–with-mingを付けとけば良い模様。

が、また問題。
PHP4.4.2で–with-ming付きでmakeするとコンパイルエラーが発生してしまった。
(CentOS 4.3 / gcc 3.4.5 20051201 (Red Hat 3.4.5-2))
PHP Bugs#37472でも似たような例が載ってた。
しょうがないのでPHP5.1.4でインストールしたところ無事インストール完了。

次インストールする時は
・mingインストール
・PHP5.1.4を–with-mingでインストール
で良いかと。

ming インストール

  • 2006-08-01 (火)
  • PHP
この記事の所要時間: 012

PHP4系でmingを使う際にはまったのでメモ。

mingのソースをtarballから解凍してもphp_ext/は見当たらない。
実はming-phpという別のtarballが必要なのでご注意を。

ホーム > PHP

検索
フィード
メタ情報

Return to page top