揮発性のメモ2

http://d.hatena.ne.jp/iww/

PHP

date() で変なエラーが出るとき

PHP

Fatal error: date(): Timezone database is corrupt - this should *never* happen! in /opt/hoge/test.php on line 2 wordpress - PHP Timezone database is corrupt error - Stack Overflow SNS構築(OpenPNE) - Fedoraで自宅サーバー構築 キュン/Imamura(…

PhpStormで、BSキーで空白だけの行のインデントを下げようとすると 行ごと消されてしまう不具合を解消する方法

Fileメニューの Setting から Editor⇒General⇒Smart Keys に進み Backspace の Unindent: を Disabled にする。 Phpstormでインデントを消すと行が消える | ウェブゴト なぜか Default Settings にはこの項目が無いので、プロジェクトごとに設定が必要で め…

falseを配列にキャストする

PHP

falseを配列にキャストすると、falseが配列になる。 bool(false) } array(1) { [0]=> bool(false) }

content-type: application/json

PHP

JSONファイルのときは、きちんと content-type を指定した方が良い。 hello = "世界!"; header('content-type: application/json; charset=utf-8'); echo json_encode($o, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); json形式ということが明示されていれ…

sendmailコマンドが標準出力にエラーメッセージを出してしまうのをなんとかする

PHP

PHP*1のmail()は内部で sendmailコマンドを呼び出している。 sendmailコマンドが標準出力や標準エラー出力になにかゴミを出力すると、そのまま出てきてしまう。mail()の前に ob_start() を入れ 終わったら ob_end_clean() を呼ぶようにしても、出力を抑止す…

realpathコマンド

PHP

#!/usr/bin/php -q \n"); exit; } $path = $argv[1]; //print( "$path -> " ); print( realpath($path) ."\n" );

文字コードの変換

PHP

PHP: mb_convert_variables - Manual

μ秒をとる

PHP

PHP: microtime - Manual

可変長引数のコメントの書き方

PHP

これであっているかは不明 PHP5.6より前 phpDocumentorでドキュメントの自動生成 @param

FuelPHP の Session::rotate() はローテート前のセッションファイルを削除しない

PHP

FuelPHP の Session::rotate() はローテート前のセッションファイルを削除しない セッション変数をすべて削除し、rotated_session_id という変数だけを登録する $ test_unsession.php /tmp/testsid_866f1e60e6903ea7327e6ba42be61df2 Array ( [rotated_sessi…

FuelPHPでクッキーにHTTPOnly属性を指定する

PHP

APPPATH/config/session.php を編集する cookie_http_only を true に変更 null, 'cookie_http_only' => true, // ★HTTPOnly属性を設定する 確認方法 wiresharkなどで適当に確認する Set-Cookie: のどっかにhttponlyと書いてあれば成功 Set-Cookie: hogehog…

is_numeric() は前のスペースは無視するが、後ろのスペースは無視しない

PHP

PHP: is_numeric - Manual PHP: ctype_digit - Manual

FuelPHPでセッションがタイムアウトしたときに削除されるタイミング

PHP

fuelphp 1.7.2 $COREPATH/session/file.php config['gc_probability']) { if ($handle = opendir($this->config['path'])) { $expire = $this->time->get_timestamp() - $this->config['expiration_time']; while (($file = readdir($handle)) !== false) { …

FuelPHPのUriクラスが正しいUriを返さない

PHP

エイリアス機能なんかで、URLと実際のフォルダ名とが食い違っているとき Uri::main() などのメソッドが返すURLはおかしくなる http://localhost/hogehoge/piyo/fugaプロジェクトhogehogeとしてhogehogeディレクトリに置いてあるとき Uri::main() http://loca…

BOMありファイルを探す

PHP

頭から何バイトか読み出して、 先頭が0xEFだったら BOMあり CR+LFがあったら CR+LF #や と看做して引っ掛かったファイルの一覧を作成する #!/usr/bin/php -q

末尾に ?> がありそうなPHPファイル一覧

ケツ10行以内に ?> で始まっている行があれば、怪しいと判断する #!/bin/sh (tail $1 | grep -qe '^?>') && echo $1 find -name "*.php" | xargs -n1 hoge.sh

関数の引数の「変数名」を取得する

PHP

How to get a variable name as a string in PHP? - Stack Overflow バックトレースを使って、ソースを直接読んで、関数を呼び出している行の変数名を取得する という ちからわざ

オブジェクトは参照渡し

PHP

ずっと実体渡しだと思いこんでた。 無駄な&がいっぱいあるわ・・・ a = "piyo"; } $A = new a; $A->a = "hoge"; print_r($A); b($A); print_r($A); a Object ( [a] => hoge ) a Object ( [a] => piyo )

多重起動防止にファイルロックを使う

PHP

ファイルロックをする際、ファイルロックを関数にするとロックが効かなくなるので注意する

変数内での文字列の置換

PHP

x}_${b}_${c[0]}_{$c[1]->x}"; print("$z\n"); // hoge_piyo_fuga_hoge 変数のパースについて PHP: 文字列 - Manual 基本的には、全体を{ }で囲うのが無難だけど、そのまま書いても認識される。変数に続けて 英数字や_、[]や-> がくるときは{ }でくくらない…

データ受信時の罠

PHP

unpack()の結果をlist()につっこむ

PHP

unpack()の戻り値の配列は 0始まりではないので、list()につっこめない。

配列の添え字の null

PHP

配列の添え字に null を使うと、空文字列になる。 で、空文字列と 0 とは別物。 foo [] => piyo [0] => bar ) Null は空文字列にキャストされます。つまり、キーに null を指定すると、実際には "" として格納されます。 PHP: …

print_r の読み方

PHP

"Hello", "b"=>1234); print_r($b); A Object ← Objectって出る ( [a] => Hello [b] => 1234 ) Array ← Array って出る ( [a] => Hello [b] => 1234 )オブジェクトと連想配列の出力の区別がつかないけど、1行目で区別ついてた

配列の結合

PHP

(0,1,2,3) という配列a と (A,B,C,D,E,F) という配列b をくっつける 0 [1] => 1 [2] => 2 [3] => 3 [4] => E [5] => F )配列同士を足し算すると、添え字はそのまま扱われる。 同じ添え字の場合、先のが優先される。

セッション変数を覗く

PHP

セッション変数をコマンドラインから覗けるとデバッグ時に便利なので、覗けるようにする。 普通のセッションの場合 #!/usr/bin/php -q

自動で採番される配列の添え字は 最大値+1

PHP

キーを省略して新規要素を追加する場合、 追加される数値添字は、使用されている添字の最大値 +1になります。 まだ数値添字が存在しない場合は、添字は 0 (ゼロ) となります。 ・・・ その配列の最大添字が負である場合は次の添え字はゼロ (0) となります。 …

PhpStormで、"Multiple definitions exist for class" の警告を抑止する

のっぴきならない事情により同一プロジェクトに複数の同名クラスがあるためこの警告が出てしまうのを、出ないようにする。 File⇒Settings ⇒Editor⇒Inspections ⇒PHP⇒Undefined⇒Undefined class のオプション Don't report multiple class declaration potent…

PhpStormで、無視したいwarningを簡単に選択する

PhpStormで、わざとやってるなどの理由で、警告してほしくない警告を無視する。 たとえばコンストラクタの型が不一致とかのやつ 豆電球アイコンをクリックしていき、「Edit inspection profile setting」を選ぶと Inspectionの設定ページに飛ぶので、そこで…

PhpStormで、コード補完時に大文字小文字の区別をしない

File ⇒ Settings... ⇒ Editor ⇒ General ⇒ Code Completion Case sensitive completion が補完時に大文字小文字の区別をつけるかの設定になってる。 None 大文字小文字を区別しない All 大文字小文字を区別する First letter 先頭の文字だけ大文字小文字を区…