タグ

phpに関するrryuのブックマーク (188)

  • PHP: proc_open - Manual

    proc_open( array|string $command, array $descriptor_spec, array &$pipes, ?string $cwd = null, ?array $env_vars = null, ?array $options = null ): resource|false パラメータ command 実行するコマンドラインを string として渡します。 特殊な文字は適切にエスケープされ、適切にクォートされます。 注意: Windows では、 options の bypass_shell を true に設定しないと、 cmd.exe (実際は%ComSpec%) に command の値を クォートしないまま (つまり、proc_open() に渡されたそのままの値を) /c と一緒に渡してしまいます。 この振る舞いによって、cmd.ex

    PHP: proc_open - Manual
    rryu
    rryu 2013/01/30
    5.0.0のchangelogには「Added pty support to proc_open()」とあるのになぜマニュアルには記述が無いのだろうか。
  • PHPで==の代わりにstrcmp関数を使うことによる問題点 - hnwの日記

    補足(2010/12/01 03:00):floatからstringへのキャストで丸められる桁数についてですが、php.iniの設定値「precision」の影響を受けるようです。 僕は以前から「PHPの==はキモいから===を使おうよ」と言っているつもりです(参考:「PHPの==がキモい件」)。しかし、ネット上には==を使った比較での不慮の事故を防ぐ目的で、「安全な==」としてstrcmp関数を使って比較している人が居るようです。このやり方について問題点を指摘します。 strcmpで比較するというのはstring型にキャストをして比較するのと同じですから、キャストして何が起こるか熟知していないと比較結果は想像がつきません。僕は全ての型からstring型へのキャストで何が起こるかスラスラ言えるわけではありませんから、何でもstrcmpするのは==を使うのと同じように怖いと感じます。 今回、

    PHPで==の代わりにstrcmp関数を使うことによる問題点 - hnwの日記
    rryu
    rryu 2012/12/27
    PHPは奥が深い……『「安全な==」としてstrcmp関数を使って比較している人が居るようです』
  • PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記

    メリークリスマス! PHP Advent Calendarもいよいよ24日目に突入です。 昨日はxhprofについてでしたね。僕もパフォーマンスチューニングの際に使っています。手軽に利用できるのでお勧めです。 さて、このエントリーでは表題の通りMVCについて書かせていただきます。これは、PHPカンファレンス2012&WordCamp Tokyo2012合同LT大会で発表した「やはりお前らのMVCは間違っている」で煽るだけだったこの問題をきちんと解説するものです。 この発表資料を公開するとPHPの枠を超えて広く閲覧いただき*1、また多くの方から突っ込みを戴きました。「LTだから」と言って逃げていた回答をして、気持ち新たに新年を迎えようと思います。 MVCとはなんなのか 間違いを指摘する前にMVCがそもそもどういうアーキテクチャであるのかを確認しなければいけません。 MVCは1970年代にパロ

    PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記
    rryu
    rryu 2012/12/26
    PHPの標準機能のほとんどが例外を投げてくれない都合上MVCをきっちり分離するにはエラーを自前でエスカレーションしていく必要があって通常の3倍くらいめんどくさくなるので、そういうのもCが太る要因かもしれない。
  • http://kwatch.houkagoteatime.net/blog/2012/12/25/php-generator-4/

    rryu
    rryu 2012/12/25
    なかなかファンタスティックな使い方だった……。そこまでやるならいっそRubyのブロックのようなものを実装した方がよさそう。
  • PHPのセッションアダプションは重大な脅威か否か論争

    リンク はてなダイアリー とくまるひろしのSession Fixation攻撃入門 - ockeghem(徳丸浩)の日記 やぁ、みんな,元気?とくまるひろしです。今日はSession Fixation攻撃の方法をこっそり教えちゃうよ。 .. 6

    PHPのセッションアダプションは重大な脅威か否か論争
    rryu
    rryu 2012/12/15
    大垣さんがまだ修正されていない事実を知っても1ミリたりとも動揺しないどころか、すぐさまpullリクエストを送るつもりもない感じが、割とどうでも良い脆弱性である証拠のような。
  • PHP: Gender - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: Gender - Manual
    rryu
    rryu 2012/12/13
    「名前の性別の判別」って、PHPにはたまに何に使うのかよく分からない機能がある。
  • 号泣。CakePHPでSessionが突如切れるのはfaviconのパスが問題でした

    まさかメールフォームのSessionデータの受け渡しで躓いて丸一日潰すハメになろうとは・・・ でもこれで原因がちゃんと分かりましたし、今後Sessionが突如切れた場合、他のケースでもどのように対応したらよいのかが分かっただけでもよしとします。 CakePHPで突如Sessionが切れる原因 どうやら、CSSや画像関連で実際に存在しないパス&URLを指定していると、サーバにHTTPアクセスを行い、そしてSessionが切れるという問題が発生するようです。 app/webroot/.htaccess そこで、webroot下の.htaccessにこのように記述すればよいらしいのですが、 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILE

    号泣。CakePHPでSessionが突如切れるのはfaviconのパスが問題でした
    rryu
    rryu 2012/10/27
    CAKE_SECURITYがhighだとリクエスト毎にセッションIDが再生成されるが、404になるリクエストが裏で出ていると新しいセッションIDのクッキーをブラウザが食っていてくれなくて死亡という感じらしい。
  • PHPのis_a関数における任意のコードを実行される脆弱性(CVE-2011-3379)とは何だったか

    少し古いバージョンになりますが、PHP5.3.7および5.3.8のis_a関数には「任意のコードを実行される脆弱性(CVE-2011-3379)」があります。 任意のコードが実行されるとはただならぬ感じですが、このCVE-2011-3379はほとんど話題になっていません。なぜでしょうか。それは、この脆弱性が発現する条件が、レアなケースに限られるからです。 このエントリでは、CVE-2011-3379について少し詳しく説明することを通して、脆弱性情報の見方について考えてみます。 is_a関数とis_subclass_of関数 PHPにはis_a関数とis_subclass_of関数というよく似た関数があります。以下PHP5.3.6までの「元々の」仕様について説明します。 is_a関数は、2つの引数をとり、第1引数のクラス(インスタンスで指定)が、第2引数のクラス(クラス名で指定)またはそのサ

    rryu
    rryu 2012/10/01
    is_subclass_of()の仕様がis_a()に伝播したのは実装を共有していたからだとは。前者はクラス同士の、後者はインスタンスとクラスの比較で異なるものを混ぜるからーー
  • PHP :: Bug #55475 :: is_a() triggers autoloader

    [2011-08-22 08:16 UTC] mads at gartneriet dot dk Description: ------------ When calling is_a() with a first argument that is not an object, then __autoload() is triggered: Test script: --------------- <?php function __autoload($class) { echo "Would load: " . $class . PHP_EOL; } $var = "test"; var_dump(is_a($var, 'B')); $obj = new Stdclass; var_dump(is_a($obj, 'C')); ?> Expected result: -----------

    rryu
    rryu 2012/09/17
    is_a()がautoloadを誘発するのはバグではないかという議論。
  • 徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012

    2. 日お話しする内容 • 鉄則1: PHP自体の脆弱性対処をしよう • 鉄則2: Ajaxの脆弱性対処をしよう • 鉄則3: 競合条件の脆弱性対処をしよう • 鉄則4: htmlspecialcharsの使い方2012 • 鉄則5: escapashellcmdは使わないこと • 鉄則6: SQLインジェクションの対処 • 鉄則7: クロスサイト・スクリプティングの対処 • 鉄則8: クロスサイト・リクエスト・フォージェリの対処 • 鉄則9: パスワードの保存はソルトつきハッシュ、できればスト レッチングも • 鉄則10: 他にもたくさんある脆弱性の対処 Copyright © 2012 HASH Consulting Corp. 2 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍

    徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
    rryu
    rryu 2012/09/17
    is_a()の脆弱性は仕様がバグっているとしか思えない。なぜ第2引数ではなく第1引数の方を__autoloadに渡すのか。
  • PHPでもリアルタイムWeb。node.php·React MOONGIFT

    node.jsの魅力はノンブロッキングシステムにあります。そんなnode.jsの魅力をPHPで実現するソフトウェアがReactです。 サンプルコードです。読み込むたびに数字が繰り上がります。 同時に二つのファイルをダウンロードするデモです。パラレルで処理されています。 サーバを実行しているところです。 読み込むと数値が繰り上がっていきます。 ReactではApacheなどを使うのではなく、独自のWebサーバを立ち上げて実行します。また、そのままPHPを使うというよりはReactのライブラリでラッピングしながら作っていく形になります。そのため専用の作法を覚える必要がありそうですが、使い慣れたPHPを使ってノンブロッキングシステムを実現できるというのは魅力的かも知れません。 ReactPHP製、MIT Licenseのオープンソース・ソフトウェアです。 MOONGIFTはこう見る node.

    PHPでもリアルタイムWeb。node.php·React MOONGIFT
    rryu
    rryu 2012/05/31
    node.php的な何か。通常のPHP CLIで動かすので拡張モジュール等が全部使えるというのがnode.jsに対する利点? 非同期と相性が悪そうだけど…
  • PHP: 受ける可能性がある攻撃 - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: 受ける可能性がある攻撃 - Manual
    rryu
    rryu 2012/05/07
    PHPをCGIモードで実行した場合に考えられる危険性について。インタプリタが/cgi-bin/phpに置かれるという時点で使っては行けない系の雰囲気がある。
  • なぜPHPのfgetcsv()はロカール依存という糞仕様なのか - moriyoshiの日記

    前から言われてる、これ。 (id:hnw さんも、もしかしたらこれは私が実装したということを知っていて自粛してるのかもしれないけど、そういう気遣いは不要です!) まあつまりですね、もともとfgetcsv()は「\」(0x5c) で次の文字をエスケープできるという割と不便な仕様になっていて、Shift_JISのようなエンコーディングは利用に難ありだったわけで。 で、一応 Shift_JIS が通らないという苦情は来ていて (特に Windows 版で) 、でも標準関数だから mbstring への依存を作るわけにいかない。というわけで C99 になっちゃうんだけど mbrlen(3) (か mblen(3)) を使うということにしたので、結果的にロカールに依存するということになったというわけですよ。 なので、Shift_JIS 使いたければ、libc の設定で利用可能ロカールの一覧に Shi

    なぜPHPのfgetcsv()はロカール依存という糞仕様なのか - moriyoshiの日記
    rryu
    rryu 2012/05/03
    fgetcsv()実装者による解説。
  • PHPのロケールに関するまとめ - hnwの日記

    5/3 17:45追記:t_komuraさんに指摘いただいた関数と、さらに僕が調べ直したものを含め、「ロケール設定に従う関数一覧」に25個ほど追加しました。かなり見落としがありましたね…。 PHPのロケール*1まわりについて調査したので、これをまとめてみます。 この記事は「ロケールの影響を受ける関数 - Sarabande.jp」を掘り下げたものです。masakielasticさん、ナイスな記事をありがとうございます。 PHPの文字列型と文字エンコーディング 他のモダンなLL言語と異なり、PHPは文字列の文字エンコーディングに関して何も仮定せず、単なるバイト列として管理しています。つまり、文字エンコーディングの取り扱いは各関数の実装に委ねられています。 下記の通り、これはマニュアルにも記述があるのですが、実に残念なことです。 残念ながら、PHP の各関数が文字列のエンコーディングを判断する

    PHPのロケールに関するまとめ - hnwの日記
    rryu
    rryu 2012/05/03
    これは良いまとめ。文字コードの設定はmbstringとZend Multibyteとlocaleの3系統があって死ぬる。
  • PHPでHTTPレスポンスコードを返すときPHP_SAPI分岐は要るのか - なんたらノート第三期ベータ

    こたえは「たぶん要らないんじゃないの」です。はいおわり、というのでは何の話かわからないので、以下に詳しく書いておきます。 PHPのマニュアルで header() 関数を調べるとこんなことが書いてありました。 特殊な header コールが 2 種類あります。最初のものは、 文字列 "HTTP/" から始まる全てのヘッダ (大文字・小文字は区別されません) です。 このヘッダは、送信する HTTP ステータスコードを示すために使用されます。 例えば、存在しないファイルへのリクエストを処理するためにある PHP スクリプトを使用するよう (ErrorDocument ディレクティブにより) Apache を設定する場合、 そのスクリプトが正しいステータスコードを返すようにする必要があります。 < ?php header("HTTP/1.0 404 Not Found");FastCGI の場合

    PHPでHTTPレスポンスコードを返すときPHP_SAPI分岐は要るのか - なんたらノート第三期ベータ
    rryu
    rryu 2012/04/21
    header()のめんどくさい仕様について。
  • PHP: compact - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: compact - Manual
    rryu
    rryu 2012/04/16
    これは何に使うんだろう。なんとなくextract()の逆関数として用意しただけな気も。
  • PHPのescapeshellcmdを巡る冒険

    以前、ブログ記事「PHPのescapeshellcmdの危険性」にて、escapeshellcmd関数の「余計なお世話」によって危険性が生まれていることを指摘しましたが、その後大垣さんによって修正案が提示され、結局「それはマニュアルの間違い」ということで決着が着いたようです。ところが、この議論とは別のところで、escapeshellcmdはPHP5.4.0で挙動が少し変わっていることが分かりました。 経緯 2011/1/1 徳丸が「PHPのescapeshellcmdの危険性」を書いて、クォート文字がペアになっている場合にエスケープしないという仕様が余計なお世話であり、危険性が生じていることを指摘 2011/1/7 大垣さんがブログエントリ「phpのescapeshellcmdの余計なお世話を無くすパッチ」にて修正案を提示 2011/10/23 廣川さんが、大垣さんのパッチ案を少し修正して

    rryu
    rryu 2012/04/09
    変更を取り消す際の逆マージに失敗して cmd[y++] = str[x]; が実行されなくなったからですね。どう見てもバグというかなぜテストに引っかからない? http://bit.ly/HvbNNe
  • PHPのメモリ消費量の簡単なベンチマーク、やっぱりダメポ - C++ ときどき ごはん、わりとてぃーぶれいく☆

    とりあえ図。 ソース。 環境。 LH-MAIN /tmp/test% uname -a Linux LH-MAIN 3.2.8-1-ARCH #1 SMP PREEMPT Mon Feb 27 21:51:46 CET 2012 x86_64 AMD Phenom(tm) II X4 940 Processor AuthenticAMD GNU/Linux LH-MAIN /tmp/test% php --version PHP 5.3.10 with Suhosin-Patch (cli) (built: Feb 6 2012 19:18:12) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies LH-MAIN /tmp/test% cat

    PHPのメモリ消費量の簡単なベンチマーク、やっぱりダメポ - C++ ときどき ごはん、わりとてぃーぶれいく☆
    rryu
    rryu 2012/03/06
    PHPの値はzval(16バイト?)だし配列はハッシュテーブルなので、単純にCの配列と比較するととんでもないオーバヘッドになるというか、今こそSplFixedArrayの出番な気がする。
  • PHPの足し算のバグ - てきとうなメモ

    PHP :: Bug #61095 :: PHP can't add hex numbers via はじめてのにき(2012-02-25) $ php -r 'echo (0x00+2);echo "\n";' 4 $ php -r 'echo (0x00+ 2);echo "\n";' 2 $ php -r 'echo (0x00 + 2);echo "\n";' 2 $ php -r 'echo (0x00 +2);echo "\n";' 4 $ php -v PHP 5.3.8 (cli) (built: Dec 5 2011 21:24:09) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologiesなかなか面白い。以下のpatchでもうf

    PHPの足し算のバグ - てきとうなメモ
    rryu
    rryu 2012/02/28
    0のみからなる16進数値リテラルをパースする際に字句境界を超えてパースしてしまうバグ。そういえば前にもstrtod()をそのまま使っているが故の不思議な挙動の話があったような。
  • PHP で h() を書くなら一緒に echo しよう。 - こせきの技術日記

    名前が長い関数 htmlspecialchars() を h() と書けるようにすると便利、という話がある。 PHP: htmlspecialchars - Manual htmlspecialchars関数を簡単に扱えるようにする 第1回 CakePHPを使いたくなる5つの特徴:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社 htmlspecialchars() なんて長い名前は絶対忘れるし、ENT_QUOTESだのUTF-8だのも書き忘れるに決まっている。 h() は CakePHP でも使われていて、いいと思う。いいと思うんだけど、もうちょっといける。 <?php /** 改善前のエスケープ関数 */ function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8') } このようにエスケ

    PHP で h() を書くなら一緒に echo しよう。 - こせきの技術日記
    rryu
    rryu 2012/02/17
    確かにechoは封印してh()とかraw()とかだけ書いた方が良さげな感じがする。echoの再定義さえできれば……