php

Pear::Logを使う

php

やっぱログ出力は大事ということで。 サーバにインストールされていない場合は、pearコマンドでさくっとインストール。 # pear install Log使い方のサンプルはこんな感じで。 debug("デバッグログを出力します"); $log->info("情報ログを出力します"); $log-…

Xdebugを入れてみる

pecl install xdebugでもいいんだけど、とりあえずソースから入れてみる。前提 : php.iniの場所は /usr/local/lib/php.ini Apacheの場所は /usr/local/apache2 wget http://www.xdebug.org/files/xdebug-2.0.4.tgz tar zxvf xdebug-2.0.4.tgz cd xdebug-2.0.…

CakePHPでAjax処理した時、読み込んだファイル内でメッセージが化ける

「CakePHP jQuery を使用した Ajax ファイルアップロード」を参考にファイルアップロード機能を実装していたんだけど、ファイルのタイプがアップロード非対応だった場合などでコントローラからAjaxページへエラーメッセージを出力する際 set("error", "アッ…

Ubuntu Linuxを9.04にしたら画像周りが動かなくなった

開発テストマシンとして使用していたUbuntu Linuxのバージョンを9.04に上げたところ、上で動かしていたCakePHPベースのファイルアップロード/サムネイル作成の部分が正常に動かなくなった。 めんどくさくてずっと放ったらかしていたんだけど、さすがにまず…

オブジェクトのコピーの挙動が4と5で違う

php

今更PHP5の話。いや、なにげに最後に開発したのがPHP4の環境で、その後ブランクもあったりするもんだから今回初めてPHP5で開発してる訳で。 mofify("-7 day"); $dt2->modify("+7 day"); とかしたら怒られて「ナンデ?」と調べてみたら。 ※PHP4ではデフォルト…

文字列から全てのHTMLタグを除去する

php

CakePHPにはSanitizeライブラリというものがあって、簡単に文字列から指定タグを取り除いてくれる。とっても便利。 でも、その中に「全タグ除去」という関数は存在しなかったりする。 もしかしてこれは正規表現フラグ?mjd?とげっそりしていたのだけれど…

「Multiple flashes with different classes」でメッセージを綺麗にしてみる

Multiple flashes with different classes http://www.secondbrain.co.jp/blog/?p=53 前の方でも「使ってる」とは書いたけれど、これがなかなか便利。 具体的にはコントローラで flash("出力したいメッセージ", "success / error / status"); ビューの中で s…

empty()に0を渡すとfalseになる

php

例えばこんなコードを書いているとき layout = "error"; return; } 正規データとして$idに「0」が渡ってきたとしても、それだとempty()でfalseを返してしまう。 まあ、それはempty()の仕様なので正しい動きなんだけども。 var が空でないか、0でない値であれ…

Ktai Libraryを使いながらViewをPCと携帯で切り替える

CakePHP+Ktai Libraryを使用しているサイトで、アクセス元の端末を判別してCakePHPのViewを切り替える方法。 キャリア判別はしてないけど、この方法なら簡単に実装できるはず。 参考 : CakePHPで携帯サイトを作る - HTML出力振り分け(2)

キャッシュの罠

テーブルに項目を追加し、ControllerとViewも修正した。 なのに、どーーーーーーーしてもその項目が反映されない。 具体的には Model->find(null, $id); ... ?> とかしたとき、項目名を指定せずnullだと新しい項目が取得できない。 Model->find(array("old_c…

Model->save()の挙動について

CakePHPのModel->save()は、 idが設定されていればUpdate 設定されていなければInsert というのは判っていたんだけど、例えばモデル「User」のキーが「USER_ID」という名前だったとき User->UserId = $this->data["User"]["USER_ID"]; $data["User"]["PASSWD…

複数プロジェクトから同じ画像を参照する

CakePHPの $html->image() はとても便利なのだけれど、 複数プロジェクトが混在している プロジェクトAから画像ファイルをアップロードする プロジェクトBから、上の画像を参照する ということをしようとした場合、$html->image だと「プロジェクトのパス+…

Ubuntu8.10 + Apache2.2.11 + PHP5.2.9

ApacheとPHPの最新版を入れたいので、例によってソースからコンパイル。 UbuntuはDebianなので、パッケージ管理はapt。 (参照: 第04回 「apt-get, dpkg コマンドでパッケージ管理」) まあ、めんどくさいのでSynapticパッケージマネージャのお世話になった…

セッションが切れたらログインフォームへ飛ばす

controllers/app_controller.php Session->check("User")) { $this->redirect("/login/index"); exit(); } } 各コントローラ内 checkSession(); }

存在しないページにとんだときエラーを出す

指定されたアクション/コントローラ/ビューが存在しなかった場合にエラー表示する為のビューを設置。 views/missing_action.ctp views/missing_controller.ctp views/missing_view.ctp <p>指定されたページは存在しません。</p> コントローラ内でエラーが発生した…

CentOS4.5で Apache2.2 + PHP5.2 [1]

テストサーバとして使用しているCentOS4.5のPHPは現在5.1系。 しかしDatetimeが使いたいという要請があったので、5.2にアップグレードすることにした。

CentOS4.5で Apache2.2 + PHP5.2 [2]

続き。 Apache2.2をソースからコンパイルすることに。

CentOS4.5で Apache2.2 + PHP5.2 [3]

さて、本題のPHP。

CakePHPで高速Webアプリ開発

仕事で勉強する必要に駆られたので、「CakePHPで高速Webアプリ開発」を基に勉強。 でも、例が1.1なんだけど使ってるのは1.2だったりして結構直しが必要だったのでメモ。 ちなみにMultiple flashes with different classesを使用してみた。エラーメッセージが…

CakePHPでNot Found

http://gihyo.jp/dev/serial/01/cakephp/0005?page=2 の手順でブラウザから参照した際、「Not Found」になる場合がある。 Webではトップディレクトリ配下にCakePHPプロジェクトを置いて実行することを念頭にしているので、サブディレクトリを切って開発環境…

CakePHPでDBのデータが文字化け

http://umibozzu.blog26.fc2.com/blog-entry-202.html 例ではxamppだけど、CentOSでも同じことが起こった。 CentOSの場合は/etc/my.cnfに以下を修正。

カテゴリページのときだけエントリリストを表示したい

カテゴリページを開いたとき、そのカテゴリに関連するエントリだけをリスト表示したい場合。 is_categoryとget_the_categoryの合わせ技。 <ul> cat_ID) ) { ?> cat_ID . "&order=desc"); ?> </ul>

phpMyAdminをインストール

http://blog.livedoor.jp/linuxer2006/archives/65133188.html を参考に、phpMyAdminをインストールしてみた。

ループ内のthe_tagsが反映されない

今まで特定カテゴリのループ処理を (ループ内処理) としていた。 理由としては同カテゴリ内でも表示させたくない記事があって、excludeが使いたかっただけなんだけども。 けれど、get_posts()を使うとthe_tagsの中身が表示されないことに今頃気付いたの…

URLを短く表記する

MediaWikiを、いわゆる「ショートURL」で運用する手順。

ファイルアップロードを可能にする

MediaWikiはデフォルトでファイルアップロードを許可する設定になっていない。 設定を変更するには、LocalSettings.phpの $wgEnableUploads = false; を、trueに変更。 →メニューに「アップロード」が追加される。

ログインユーザ以外はいろいろできないようにする

MediaWikiは、デフォルトでログインユーザ以外もいろいろ弄れてしまうし、当然新規登録もできる。 個人で使用するには問題があるので、ログインユーザ以外はいろいろできないようにした。 以下を末尾に追加。

BluWiki:Skinの編集

BluWiki:Skinのデフォルトは、右上に表示されるアイコンが表示されない。 正しく表示されるようにする為には、PHPを弄る必要があった。