nmtysh.log

Tech系のネタや日々の独り言などを書いています。

PHP

MacにHomebrewでComposerをインストールする(備忘録)

※この記事はQiitaにも投稿しています。 Atomからphpmdを呼び出して自動チェックさせたりするついでにComposerも導入して仮想マシンを経由せずにMac上で直接使える様にしてみました。 0. 環境 Mac OS X 10.11 Homebrew 1. Install $ brew install Composer ==…

ネストしたトランザクションに久々に嵌った

データ変更のバッチ処理を書いて、検証して「よしOK」となりローカルの環境に本適用しました。 その後、念のため同一処理を再実行しても再適用されないことを検証したら何故か適用されちゃいました。 検証中は意図的にトランザクション処理をrollback()する…

dockerのphp:7-fpm-alpineイメージでCakePHP3を動かす

※この記事はQiitaにも掲載しています。 nmtysh.hatenablog.com PHP7を試すためのdocker-compose.ymlを作って、CakePHPをいざ試そうとすると色々モジュールが足りなかったり、VirtualBoxでBoot2Dockerを動かしているために発生する問題があったので、その対処…

PHP7を試すためのdocker-compose.ymlができました!

設定ファイルの作成に苦戦しましたが、やっと環境をつくれました! github.com docker-compose up -dで起動してdocker-machineのipに接続すると、NginxからPHP-FPMへちゃんと処理が渡せてphpinfo()が表示できました! 構成図はこんな感じです。 設定ファイル一…

NginxとaliasとPHP-FPM(多分上手く行きました)

昨日、Nginxの設定に苦戦していましたが、どうやら上手くできたようです。 nmtysh.hatenablog.com nginx+php-fpmをyumでインストールして、WordPress/CakePHPを動かす設定 - Shin x blog www.1x1.jp この記事を参考にして設定すると上手く行きました。 やは…

NginxとaliasとPHP-FPM(苦戦中)

サブディレクトリでWordPressを動かすことになって、alias設定をしようとしているのですが、上手く行かず…… "File not Found"が帰ってくるんですよね…… nginxのエラーログにも記録でないし…… どうもfastcgiでPHPに処理を渡す際に上手くパス指定ができていな…

listen.allowed_clientsに空白を入れてはいけない

PHP-FPMで接続を許可するFastCGIクライアントの一覧を設定するパラメータに listen.allowed_clients があります。 接続を許可されている FastCGI クライアントの ipv4 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+) における環境変数 FCGI_WEB_SERVER_AD…

CakePHP 2.xのElementのCacheは入れ子にできない

CakePHPでViewのElementでキャッシュが利用できます。 利用できますが、キャッシュ生成処理の処理上、入れ子になったElementで親と子の両方でCacheを使うとCacheがおかしくなります。 親のElement(ここではAとします)で、Elementの処理時にCacheのconfigを生…

rename後にはchmodが必要だった

意図したパーミッションにならない 対象Ver: 5.5.x ファイルシステムにファイルを吐き出すCakePHPのコードを書いたのですが、作成したファイルが意図したパーミッションになりませでした。 ファイルを作成した流れ 一時ファイル作成(パーミッションは0644を…

テストパターンを上手くまとめられるようになりたい

関数のテストコードを書くときに、幾つものパターンをどうまとめるのが一番良いのか悩んでいます。 単純なパターンであれば、それぞれの入力値、期待する出力値を配列にまとめることでfor文(foreach文)で回してテストコードをコンパクトにすることができます…

FormHelperでoptgroupを使う場合はshowParentsをtrueにする

CakePHPのFormHelperを使ってselectのoptgroup/optionを出力したのですが、一部のoptionが出力されませんでした。 [ 1 => 'A', 2 => 'AA', 3 => 'AAA', 4 => 'AAAA' // <- これが出力されない ], 'BBBB' => [ 5 => 'B', 6 => 'BB', 7 => 'BBB', 8 => 'BBBB'…

Nginx + PHP-FPM で 502 Bad Gateway が時折発生する場合の対処方法

Nginx + PHP-FPM で動かしている環境で 5xx エラーが発生しているようでアクセスログやエラーログを確認してみると 502 Bad Gateway が発生していました。 同じリクエストを投げても 502 になる場合と正常に表示される場合があったので、PHP側の処理の問題で…

ApacheとPHPとメモリリーク

Webサーバーを複数台構成にして運用している環境があるのだが、アクセスが集中した際にある条件下で特定のサーバーでのみメモリリークが発生してしまう。 メモリリークの発生したサーバーを切り離しても、別のサーバーでは起きず、切り離したサーバーを戻す…

すべてのUnitテストを個別に実行する方法

CakePHPのUnitテストで個別に実行する場合とAllTestsで結果が異なる問題が起きています。 他のテストの影響を受けているみたいなのですが、全部のUnitテストを手動で実行するのは骨が折れます。 なので、シェルスクリプトとまでは行きませんが、ファイルごと…

CakePHP の $useDbConfig にはまった(備忘録)

結論: FixtureのuseDbConfigでDataSourceを指定するには、対になるDataSourceが定義されてないと駄目でした。 例) $test_hoge = array(/* ... */); なら $hoge = array(/* ... */); が定義されてないと駄目。 動的にDBの接続先を切り替えるプログラムを書い…

session.use_trans_sid を使わずに CakePHP 2.3 でURLにセッションIDを付与する方法

Cookie が使えないブラウザではURLにセッションIDを付与してセッションを引き回します。 PHP だと session.use_trans_sid を1にすることで、 PHP が透過的にセッションIDの付与を行ってくれます。 ですが、付与のタイミングが問題で以前書いたようにブラウザ…

CakePHP と Content-Length と imodeブラウザ(未解決)

携帯電話(いわゆるFP:フィーチャーフォン)向けの、Webサイトを構築中な訳だが、Cookieが使えない下位端末への対応に悪戦苦闘中。 Cookieが使えない場合はセッション情報を引き継ぐ手段としてURLにセッションIDを付与するわけだが、このセッションIDの付与処…

beforeSave() でDBを切り替える

Master/Slave なレプリケーションをしている場合、更新系は MasterDB に変更します。 CakePHP だと $this->useDbConfig を書き換える必要があります。 今までだと Model.php の save($data, $validate, $fieldList) をオーバーライドする必要がありました。 …

pg_query_params() で boolean を扱う

pg_query_params() で boolean な変数を渡すとエラーになるのでその対策。 pg_query_params($query, array(($flag ? 'TRUE' : 'FALSE'))); boolean の代わりに 'TRUE'("TRUE") / 'FALSE'("FALSE") を渡してあげる。 これバグな気がするんだが… おまけ: Postg…

PHPメモ: シングルクオートとダブルクオート

シングルクオート(')で文字列を指定すると円記号(\)などがエスケープされてしまうようだ。 ダブルクオート(")だとエスケープされない。 Linux での扱いと同じ感じ。 echo 'aaa\nbbb' <- 改行されない echo "aaa\nbbb" <- 改行される

PHP: 文字エンコーディングは UTF-8(BOMなし) で保存すること!

.php なファイルを UTF-8(BOM) で保存すると IE なんかで BOM が認識されない事がありデータ内にゴミとして残る場合があるので、 UTF-8(BOMなし) で保存すること。 require や include すると UTF-8(BOM) の場合は、それぞれのファイル先頭に付いている BOM …