タグ

PHPに関するblythegirlsのブックマーク (109)

  • PHPのcopy関数がファイルサイズ分のメモリを消費する件の対策 - hnwの日記

    補足(2010/08/24 15:00):rename関数について言えば、同一ファイルシステム上であればrenameシステムコールを利用するのでこの問題は起こりません。さらに蛇足ですが、ファイルシステムをまたがってrename関数を利用するとコピーしてから削除することになり、アトミック性を保証できないため、障害の原因にならないかどうかの検討が必要だと思います。 「AKIBA de: PHPのrename()関数はファイルシステム間で使うとメモリをバカいする」で指摘されている通り、PHPのcopy関数やファイルシステムをまたがってrename関数を使う場合に、PHPがファイルサイズと同じ大きさのメモリを消費してしまいます。環境によっては再現しないかもしれませんが、僕の手元のMacOSX 10.5+PHP5.3.3環境では再現しました。 <?php // 「dd if=/dev/urando

    PHPのcopy関数がファイルサイズ分のメモリを消費する件の対策 - hnwの日記
    blythegirls
    blythegirls 2010/08/24
    えっ…renameも?と思ったら追記された。ありがとうございます
  • 極める routes.php (CakePHP 1.2) : akiyan.com

    極める routes.php (CakePHP 1.2) 2009-05-24 5/22に開催された第4回CakePHP勉強会@Tokyoにて、routes.phpの書き方と逆ルーティングについて発表させて頂きました。勉強会での発表は2回目です。 以下発表資料です。 極める routes.php View more Microsoft Word documents from akiyan. 「CakePHPでmod_rewriteを使わずに大抵のURLを作れる自信がある人ー?」 という質問でほとんど挙手が無かったので、テンション高めで発表できました。あと、1回目の発表では緊張しすぎて声が出なかったので、今回ははっきり喋るように心がけてみました。(それでも焦った箇所では声が小さくなっていたかも...)お聞きくださった皆様、どうもありがとうございました! ちなみに極めるといいつつも、named

  • URL Rewrites on IIS7 (Windows hosts) :: インストール :: CakePHPによる開発 :: マニュアル :: 1.3コレクション :: The Cookbook

    blythegirls
    blythegirls 2010/08/21
    これ、うまく動かないな…
  • PHP: Microsoft IIS 7.0 以降 - Manual

    Microsoft IIS 7.0 以降 このセクションでは、Internet Information Services (IIS) 7.0 以降を設定して、PHPMicrosoft Windows Vista SP1, Windows 7, Windows Server 2008 および Windows Server 2008 R2 で動かす方法を説明します。 IIS 5.1 や IIS 6.0 を Windows XP および Windows Server 2003 で動かす方法については Microsoft IIS 5.1 および IIS 6.0 を参照ください。 IIS での FastCGI サポートの有効化 FastCGI モジュールは、IIS のデフォルトでは無効になっています。 有効化する手順は、Windows のバージョンによって異なります。 Windows Vist

  • hnw - Openpear

    CyclicValueProducer CyclicValueProducerは、指定された配列の値を循環的に出力するようなSPLイテレータです。 デフォルトではイテレータとして無限に動作し続けますが、上限値を設定することもできます。 何の役に立つのか あまり実用的ではないと思います IgnoreExceptionIterator IgnoreExceptionIteratorは、SPLのイテレータで例外が発生しても無視するようなイテレータです。 引数のイテレータ内の例外をcatchし、何もせずに破棄します。 致命的な例外が発生しないとわかっている場合に、例外の破棄を簡潔に記述できます。 とはいえ例外が発生したことに気づけなくなるのは危険なので、LoggerIteratorなどと組み合わせて使うのが良いと思います。 LazyFileIterator LazyFileItera

  • Maarten Balliauw {blog} - Generic arrays in PHP

    Assuming everyone knows what generics are, let's get down to business right away. PHP does not support generics or something similar, though it could be very useful in PHP development.  Luckily, using some standard OO-practises, a semi-generic array can easily be created, even in multiple ways! Here's the road to PHP generics.  The hard way... One of the roads to PHP generics is some simple inh

  • おさかなラボ - strictなシステムに対するSession Fixation対策

    Session Fixationについては話題になって久しいので今さら解説するまでもないと思う。……と思ったらそうでもなさそうなのでちょっと書いてみる。 Session Fixationとは何か 一般に、Session Fixationとして話題にのぼるのは、PHPなどにおける以下のような手法である。 http://www.example.com/index.php?PHPSESSID=abcde こうすることで、(対策の取られていない)PHPは、セッションIDを’abcde’と解釈してしまう。セッションIDは来サーバーが発行するはずのものであるが、URIに埋め込むことでクライアント側からセッションIDを指定することが出来てしまうものである。 この「セッションIDが任意のものに設定可能である」ことを利用した攻撃をSession Fixation攻撃と呼ぶ……と解釈している人は以

  • Microsoft Learn: Build skills that open doors in your career

  • PHP6開発 UTF-16化を断念、5.3へロールバック | エンタープライズ | マイコミジャーナル

    PHP: Hypertext Preprocessor PHPの次期メジャーバージョンはPHP6になるとみられてきたが、問題を打破するために開発ブランチを5.3ベースへ巻き戻すという対処が実施された。Rasmus Lerdorf氏がphp.internals: PHP 6においてPHP6 Unicodeの実装が失敗したことを伝えている。PHP6ではエンジン内部の処理がUTF-16に統一される計画になっていたものの、関係者からはこの方針は間違っているのではないかという指摘もあった。今回実装が行き詰まったことで、PHPはUnicodeに対して新しいアプローチをとることになる。 このあたりの事情がFuture of PHP 6 - Johannes Schluterにまとまっている。紹介されている内容をまとめると次のとおり。 これまでの取り組み PHP6で取り組む基的な内容として、PHPエンジ

  • ctype_digit関数の罠 - hnwの日記

    PHPにはctype_digitやctype_lowerなど、ctype_XXXXという関数が多数あります。記事の話題はこれらctype関数の挙動と注意点についてです。 ctype関数のマニュアルには下記のような記述があります。 これは、256 より小さな整数が指定された場合、指定した範囲 (数値は 0x30-0x39) に収まっているかどうかを調べるために、そのアスキー値を使用することを意味します。数値が -128 および -1 (境界を含む) の間の場合、256 が追加され、その数字に関してチェックが行われます。 文字列引数を指定してコールした場合、これらの関数は、その文字列の全ての文字を調べ、その文字列の全ての文字が要求された基準に一致する場合にのみ TRUE を返します。空の文字列でコールした場合は、 PHP 5.1 より前のバージョンでは常に結果は TRUE となり、一方 5.

    ctype_digit関数の罠 - hnwの日記
  • SplFixedArrayはPHP標準の配列よりメモリを消費しない - hnwの日記

    PHP5.3.0から実装されたSplFixedArrayというSPLクラスがあります。これはマニュアルによれば下記のようなクラスです。 SplFixedArray クラスは配列の主要な機能を提供します。 SplFixedArray と通常の PHPの配列との主な違いは、 SplFixedArray は固定長であって、整数値で指定した範囲内の添字しか使用できないところです。これにより、より高速な配列の実装が可能となりました。 http://docs.php.net/manual/ja/class.splfixedarray.php 制限はあるけれども高速な配列もどきのクラスだと紹介してありますね。このクラスについて少し調べてみました。 SplFixedArrayの速度 まずはSplFixedArrayが当に速いのかどうか、下記のようなプログラムで実験してみました。実験はPHP5.3.0で行

    SplFixedArrayはPHP標準の配列よりメモリを消費しない - hnwの日記
  • htmlspecialcharsに関する残念なお知らせ - 岩本隆史の日記帳(アーカイブ)

    htmlspecialcharsのパッチ私案」に書いた件、バグレポートを出してみましたが、「すでに同じバグレポートがあるだろ」という理由により、あえなく却下されました。 せめて先方が「同じ」とみなしているレポート番号ぐらいは示してほしくて、そのようにコメントしましたが、お相手のjaniという人は気難し屋のようで*1、教えてもらえる気がしません。 私なりに探した結果、下記のレポートがくさいように感じました。 PHP :: Bug #43896 :: htmlspecialchars() returns empty string on invalid unicode sequence 「不正なUTF-8シーケンスの場合に空文字列を返すのはおかしい」というレポートで、私のそれとは正反対どころか、Shift_JISにもEUC-JPにも触れられていない別個のものです。もちろん、私はレポート送信前に

    htmlspecialcharsに関する残念なお知らせ - 岩本隆史の日記帳(アーカイブ)
  • 文字エンコーディングの妥当性確認(バリデーション)について - t_komuraの日記

    大垣さんからコメントをいただきましたので、最後に追記しました(2009.09.22)。 少し時間が経ってしまいましたが、以下のページを読んで、PHP に関連する部分について思ったことを書きたいと思います。 http://blog.ohgaki.net/char_encoding_must_be_validated http://blog.ohgaki.net/is-char-encoding-problem-difficult 私の理解が間違っていなければ、「Web アプリケーションで文字エンコーディングに関連する問題を無くす」ことを目的として、全ての Web アプリケーション開発者が以下を実行しようという主張だと思います。 全ての入力文字列の文字エンコーディングの妥当性を確認する 文字エンコーディングを厳格に取り扱う データベースなどで「バイナリ」に近い文字エンコーディングは利用しない

    文字エンコーディングの妥当性確認(バリデーション)について - t_komuraの日記
  • HTML Purifier 4登場、XSS対策およびHTMLスタンダード | エンタープライズ | マイコミジャーナル

    HTML Purifier - Standards-Compliat HTML Filtering 8日(米国時間)、HTML Purifierの最新版となるHTML Purifier 4.0が公開された。HTML PurifierはPHPで開発されたHTMLフィルタライブラリ。HTMLを標準規約に準拠したものへ変換するための機能を提供するほか、XSSとして知られる危険性のあるコードの削除などを実施できる。プラグインも提供されており、WordpressやDrupal、Joomla、Symfonyなど代表的なCMSのいくつかで利用できる。 4.0では設定関数(set)の扱いが変更され、いくつかの指定方法が利用できなくなっている。またいくつか新しい機能が追加されており、nameおよびidの扱いが従来よりもロバストに変更されたり、設定の継承ができるようになったほか、RemoveEmptyオートフ

  • PHP逆引きレシピは概ね良いが、SQLインジェクションに関しては残念なことに - ockeghem's blog

    404方面でも絶賛されていたPHP逆引きレシピを購入した。書はとても丁寧な仕事で素晴らしいと思ったが、セキュリティに関しては若干残念な思いをしたので、それを書こうと思う。 目次は以下のようになっている。 第1章 準備 第2章 PHPの基構文 第3章 PHPの基テクニック 第4章 ファイルとディレクトリ 第5章 PEARとSmarty 第6章 Webプログラミング 第7章 クラスとオブジェクト 第8章 セキュリティ 8.1 セキュリティ対策の基 8.2 PHPの設定 8.3 セキュリティ対策 第9章 トラブルシューティング 第10章 アプリケーション編 PHP逆引きレシピ オフィシャルサポート 書は、タイトルの示すように、コレコレしたいという目的ごとにPHPでの書き方が書かれている。よくある逆引き辞典タイプのだが、類書に比べて丁寧に書かれている印象を受けた。私が感心したのは、PH

    PHP逆引きレシピは概ね良いが、SQLインジェクションに関しては残念なことに - ockeghem's blog
  • cgi.force_redirect って何? - ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

    実はこれがよく分からないので、怖くて今までPHPCGIで動かしたことが無い、というへたれです。 ただいつまでも逃げてらんないし、何よりCGIで動かせばPHP4/5を同時に使えるので少し調べてみました。 何が怖いかというと、php.iniには ; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.**とか書いて有るじゃないですか。AT YOUR OW

    cgi.force_redirect って何? - ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)
  • PHPの比較の素晴らしさ加減は正常

    if ("0x0A" == "10") { print '(´ε` )チュッ'; } チュッ。されちゃいます。 文字列であっても整数と解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうってのは有名な話だよね。 文字列であっても整数と解釈できる文字列の場合は自動的に整数に型変換してくれる超便利機能があるってのは有名な話だよね。 だけどなんでコレが一致するかわけがわからんかった。 0x0Aは10進数で10になるので一致する。と、言いたいところなんですがそう単純な話じゃないんだ。 以下の例を目ん玉見開いて見て欲しい。 var_dump(0x0A); var_dump("0x0A"); var_dump((int)"0x0A"); var_dump((float)"0x0A"); var_dump(intval("0x0A")); 実行結果 int(10) string(4

    PHPの比較の素晴らしさ加減は正常
  • 見直されるべきPHP5の組み込みイテレータ - hnwの日記

    PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日語の資料が少ないせいか、かなり知名度は低いように思います。記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い

    見直されるべきPHP5の組み込みイテレータ - hnwの日記
  • APIとの通信効率をよくする実装例(2) 簡易キャッシュ

    こうして見ると、仮に5分程度ライムラグがあってもさほど影響が無いものが多い、つまり毎度APIに問い合わせるのが無駄とも言えないでしょうか。(毎度通信すべきはなのは、上の表では「高」の部分のみ)。 そこで、APIから取ってきたデータ(XML)を少しの時間だけとっておくのはどうでしょう?(リアルタイム性が高いものや検索結果については毎度通信し、それ以外のものはキープしておき再利用)アクセスしてきたAさん、Bさん、Cさん・・・誰が見ても同じ内容ならなおさらみんなでシェアできれば、通信の数もそれにかかる時間も減るはずです。 このように一定時間データを溜めて再利用するシステムや行為を、キャッシュ(cache ※1)といいます。 どんな言語でも、こんな流れのロジックが書ければ実現できるでしょう。 if ( とっておいたXMLが賞味期限切れ ) { 捨てる; } if ( とっておいたXMLがある )

    APIとの通信効率をよくする実装例(2) 簡易キャッシュ
  • 122. オブジェクトもforeachで反復処理しよう

    今回は、配列を使用したループを組むときに重宝するforeach文のもう一つの機能について紹介します。 このforeachですが、配列だけでなくオブジェクトの反復にも使用することが出来ます。(ただし、PHP5以上のバージョンでしか使えないので注意してください) これなら、データを取り出すためにwhile文を使用しなくても、foreachを一行書くだけで簡単にイテレーターの処理をすることが出来るので、工数削減や可読性の向上などが可能です。 オブジェクトを引数にした場合、foreach(オブジェクト as メンバ変数名 => メンバ変数の値)となり、アクセス権限のあるメンバ変数を全てを取り出します。 では、早速サンプルを見てみます。 class HogeClass { public $hoge = "hoge"; public $piyo = "piyo"; public $fuga = "fu

    122. オブジェクトもforeachで反復処理しよう