トップ  > メモ一覧  > カテゴリ「豆知識・ユーティリティ」の絞り込み結果 : 17件

17件中 1 〜 10 表示  1 | 2  次の7件> 最後»

No.4249 memory limitを指定してPHPを実施

memory limitを指定してPHPを実施

 php -d memory_limit=3072M
更新:2012/01/24 11:21 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.2498 PHPだけで使ってはいけない関数をチェックする

PHPだけで使ってはいけない関数をチェックする

PHPのtoken_get_all関数を使えば、RATSでPHPの利用すべきでない関数をチェックと似たようなことをPHPだけできるのでさくっと書いてみました。脆弱性チェックを細かく追加していくには不足だと思いますが、http://jp2.php.net/manual/ja/migration53.deprecated.phpに書いてある問題のある関数の存在チェックぐらいならこれでもできますよ、という感じで。とりあえずPHPだけで動くので試すのは簡単だと思います。

まずソース。

<?php

$deprecated_functions = array(
    'call_user_method',
    'call_user_method_array',
    'define_syslog_variables',
    'dl',
    'ereg',
    'ereg_replace',
    'eregi',
    'eregi_replace',
    'set_magic_quotes_runtime',
    'session_register',
    'session_unregister',
    'session_is_registered',
    'set_socket_blocking',
    'split',
    'spliti',
    'sql_regcase',
    'mysql_db_query',
    'mysql_escape_string',
    'mktime',
);

for ($i = 1; $i < $argc; ++$i) {
    $ctx = file_get_contents($argv[$i]);
    if ($ctx === false) {
        exit(1);
    }
    $tokens = token_get_all($ctx);
    foreach ($tokens as $token) {
        if ($token[0] == T_STRING && in_array($token[1], $deprecated_functions)) {
            echo "{$token[1]} at {$argv[$i]} lines {$token[2]}\n";
        }
    }
}

これをdepcheck.phpに保存します。

保存したら以下のソースをsrc.phpとして用意して、

<?php
list($user, $pass, $uid, $gid, $extra) =
    split(":", $passwd_line, 5);
?>

コマンドラインから実行します。

$ php depfunc.php b.php
split at src.php lines 3

$deprecated_functionsにリストされた関数が存在すれば、出現位置を表示します。

引用元

更新:2010/05/14 10:25 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.2072 PHP:preg_replace_callback()でセグメンテーションエラー

PHP: preg_replace_callback( ) でセグメンテーションエラー

マッチする文字数がやたらと多い場合に起こる(マッチしない場合は起こらない)

確認バージョン:PHP5.2.11
※何文字で発生するかは環境に依存する
※preg_replace()では発生せず
更新:2010/02/09 00:10 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.2036 セッションIDとして使用できる文字

セッション ID として使用できる文字
に 制限がある場合があります。例えば、ファイルによるセッションハンドラは セッション ID として使える文字は a-z A-Z 0-9 , (カンマ) そして - (マイナス) に限られます!
更新:2010/01/25 19:38 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1955 PHPで機種依存文字をチェック

PHPで機種依存文字をチェック

| | コメント(0) | トラックバック(0)
むー。やはりZend Frameworkは日本語によるところが弱い。
ということで機種依存文字(かっこ株とか丸数字とか)のチェック


 こちらのtukihatuの気になった物をあげていって一人でさびしくツッコム日記を参考にさせてもらった。ありがとー!。

    public function filter($value)
    {
        mb_regex_encoding('utf-8');
        $pattern = '[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼ ∮∟⊿纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛 奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨 﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦 益睆劯砡硎硤礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮 釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴 鸙黑ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"]';
        return mb_ereg_replace($pattern, '', (string) $value);
    }

こんなべたべたなフィルターで対応。
mb_regex_encoding('utf-8');
これがないとうまくいかない。これだけなのに1時間以上はまった。。まあそんなもんだよね。

引用元

更新:2010/01/04 15:11 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1901 5.2.12の文字エンコーディング関連の修正点

5.2.12 の文字エンコーディング関連の修正点

PHP 5.2.12 がリリースされました。

Release Announcement にも載っていますが、以前、日記に書いた htmlspecialchars() が Shift_JIS の一部の文字を通してしまう問題は、セキュリティ問題として修正されました。

他にもセキュリティ問題の修正がありますので、バージョンアップした方が安全です。PHP 5.2.12 では、htmlspecialchars() の他にも、mbstring 関連でも文字エンコーディング関連の問題が修正されましたので、メモしておきます。

htmlspecialchars()/htmlentities() で文字エンコーディングを指定した場合に、一部の不正な文字が排除されない問題の修正

以前の日記(最新の PHP スナップショットでの htmlspecialchars()/htmlentities() の修正内容について)に書いたように、修正されました。

最近になって、UTF-8 のサロゲートペアの問題も修正され、PHP 5.2.12 にもこの修正が含まれています。

また、PHP 5.3 系では、PHP 5.3.2 でこの修正が反映される予定です。

mb_convert_encoding() が UTF-16 の BOM 付き Little Endian の文字列を正しく変換できない問題の修正

以前の日記で書いた、UTF-16(BOM 付き Little Endian) を mb_convert_encoding() で変換すると文字列が壊れる問題が修正されました。

PHP 5.2.12 で修正され、PHP 5.3.2 でも反映される予定です。これで、UTF-16 を扱う場合でも、正しく変換できるようになりました。以下は PHP 5.2.12 の実行結果です。

<?php
// テスト(UTF-16: BOM 付き Little Endian の文字列)
$str = "\xFF\xFE\xC6\x30\xB9\x30\xC8\x30";
var_dump( bin2hex( mb_convert_encoding( $str, "UTF-16", "UTF-16" ) ) );
var_dump( mb_convert_encoding( $str, "UTF-8", "UTF-16" ) );
string(12) "30c630b930c8"
string(9) "テスト"

mb_detect_encoding() の第3引数(strict)を有効にすると、文字エンコーディングの判定が厳格になる

mb_detect_encoding() は文字コード判定として使用できるかで書いた問題です。

Patch を PHP-dev メーリングリスト に投稿したところ、取り込んでいただけました。

この修正によって、以下のコードは、TRUE となりますが、

<?php
// Shift_JIS として有効な先行バイトのみで判定
var_dump( "SJIS" === mb_detect_encoding( "\xa1", "SJIS" ) );
bool(true)

以下のコードは、FALSE になります(PHP 5.2.12/PHP 5.3.2 以降)。

<?php
var_dump( "SJIS" === mb_detect_encoding( "\xa1", "SJIS", TRUE ) );
bool(false)

引用元

更新:2009/12/21 10:24 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1856 最速デバッグ

php -r 'var_dump(rtrim(`hostname`));'
更新:2009/12/11 11:30 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1681 PHPFatalerror:Cannotusestringoffsetasanarray

PHP Fatal error: Cannot use string offset as an arrayAdd Star

 

文字列を三次元以上の配列とみなしてisset()すると「Fatal error: Cannot use string offset as an array」が発生しました。

PHP5.2.5/5.1.6で試しました。

PHP:
  1. <?php
  2. $a = "";
  3. var_dump(isset($a['0']['0'])); // 2次元は可
  4. var_dump(isset($a['0']['0']['0'])); // Fatal error
  5.  
  6. // empty も同じ
  7. var_dump(empty($a['0']['0'])); // 2次元は可
  8. var_dump(empty($a['0']['0']['0'])); // Fatal error
  9. ?>

$aは空文字でも"hoge"でも同じようにNGでした。ちなみに$aが文字列の時に発生するもので、数値やnullでは問題ありません。

文字列変数に[]を使うとインデックスで指定したオフセットの文字へアクセスできるので、これが影響しているのかもしれません。(ただPHP4.3.9ではこのエラーは発生しませんでした。)

これ自体は単にis_array()でチェックすれば良い話なのでそれほど大した事ではないです。

PHP:
  1. <?php
  2. $a = "";
  3. if (is_array($a)) {
  4.   var_dump(isset($a['0']['0']['0']));
  5. }
  6. ?>

引用元

更新:2009/10/28 12:48 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1505 file_get_contentsVSCURL,whathasbetterperformance?

file_get_contents VS CURL, what has better performance?
Filed under: 高速化 — ne-zu @ 7:03:51 このエントリをはてなブックマークに追加

file_get_contents VS CURL, what has better performance? - Stack Overflow

file_get_contents と CURL、どちらがパフォーマンスが良いか?という記事なのですが、まあ普通に考えてCURLのほうが早いでしょう。
で、結果もやはりそうでした、という記事。
 


vote down

I just did some quick benchmarking on this.

Fetching google.com using file_get_contents took (in seconds):

2.31319094
2.30374217
2.21512604
3.30553889
2.30124092

CURL took:

0.68719101
0.64675593
0.64326
0.81983113
0.63956594

This was using the benchmark class from http://davidwalsh.name/php-timer-benchmark


 

引用元

更新:2009/09/16 08:36 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ

No.1254 バージョンの違いで使用できない関数を利用する

PHP_Compat により、古いバージョンの PHP には存在しない機能(関数や定数) が得られます。

PHP_Compat が提供する関数は、対応する PHP ネイティブの関数と互換性があるように 設計されています。つまり、ネイティブの関数と同じシグネチャを持ち、同じ値を返し、同じエラーを返します。 すべての関数は、正確性の保障のため、ユニットテストが行われています。

PHP_Compat のコンポーネントをロードする

<?php
require_once 'PHP/Compat.php';

PHP_Compat::loadFunction('file_get_contents');
?>

もし、クラスを使いたくなければ、手動でロードすることも可能です。

手動でコンポーネントをロードする

<?php
require_once 'PHP/Compat/Function/file_put_contents.php';
?>

ロード後、関数は通常通りに使用することが可能になります。

PHP_Compat は、簡単に使えることを目標にデザインされています。 他のパッケージ等への依存性はなく、 (エラー処理機能などの) PEAR のインフラストラクチャとは別に使用されることとなります。

previousPHP_Compat (Previous)

引用元

更新:2009/08/03 11:30 カテゴリ: PHP  > 豆知識・ユーティリティ ▲トップ
17件中 1 〜 10 表示  1 | 2  次の7件> 最後»

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0