カテゴリー別アーカイブ: PHP

CakePHPでMissing Controllerメッセージを出さない方法 debugを0にせよ

CakePHPでコントローラーやモデルがないときに出るデバッグメッセージ。どのようにコードを書くべきかまで表示してくれてとっても親切なのだが、いかんせんCakePHPを利用していることがバレバレのメッセージなので本番運用環境では、出すべきではない。単にデバッグレベルの問題なんだけど、app/config/core.phpのDebug Levelを0にすれば良い 該当箇所のソース抜粋 /** * CakePHP Debug Level: * * Production Mode: * 0: No error messages, errors, or warnings shown. Flash messages redirect. * * Development Mode: * 1: Errors and warnings shown, model caches refreshed, flash messages halted. … 続きを読む

カテゴリー: CakePHP, PHP | タグ: , | コメントをどうぞ

PHP5 .htaccessによるBASIC認証のときのユーザ名取得には$_SERVER['REMOTE_USER']を使う

うーんサーバ移行ではまった。 以前のプログラムではBASIC認証が行われていないと、認証ダイアログを出してサイドアクセスを要求するつくりになっていた。サーバが変わってもこんな単純なものすぐ動くだろうと思ったが、何度やっても認証にパスしない。 if (!isset($_SERVER['PHP_AUTH_USER'])) { header(“WWW-Authenticate: Basic realm=\”INPUT ID AND PASSWORD\”"); header(“HTTP/1.0 401 Unauthorized”); exit; } 調べてみるとPHP_AUTH_USERが空白となり取得できていない。 なんで!!と調べてみたところこのサーバ移行先では諸所の事情により.htaccessによる認証をかけていた。その場合はREMOTE_USERというもので取得できるそうな。 echo $_SERVER['PHP_AUTH_USER']; echo $_SERVER['REMOTE_USER']; このコードで試してみたら、確かに下段の記述でユーザ名を取得可能なのであった!細かい違いにびっくり

カテゴリー: Apache, PHP | コメントをどうぞ

CakePHP ~を使わないシリーズ modelをつかわない

CakePHPのように暗黙の規約があるとそれからそれるときに困ってしまうのか、「~を使わないシリーズが」好評である。 これまでviewを使わない。layoutを使わないシリーズを取り上げてきたが、今度はModelを使わない。これはDBを使わない単なるTOPページに利用する場合につかうテクニック。 $uses = null; これだけ

カテゴリー: CakePHP, PHP | タグ: | コメントをどうぞ

CakePHP An Internal Error Has Occurred

CakePHPでDBにテーブルを新しく追加して、ModelとControllterを作成してアクセスしたときに遭遇したエラー。 通常Modelは自動生成されるのだが、本番モードだとどうもキャッシュがきくのか自動生成されないようだ。というわけでapp/config/core.phpのデバッグモードを一瞬だけ有効にする。 Configure::write(‘debug’, 1); たぶんこの回避策がベストではないけど、取り急ぎ回避できるので困っている人のためにあげてみた。

カテゴリー: CakePHP, PHP | タグ: , , | コメントをどうぞ

CakePHP ~を使わないシリーズ Layoutを使わない

標準のlayoutを使わない場合は以下のように記述する。 $this->layout = ”;

カテゴリー: CakePHP, PHP | コメントをどうぞ

CakePHP ~を使わないシリーズ viewをつかわない

自宅待機を命じられたので久々にCakePHPでアプリを作成中。 せっかくなのでCakePHPのTIPSでもあげておくか。 まずテストで実施したり、CSVダウンロードなどViewを使わない場合にどうするか。 Actionのメソッドの中で以下の記述をすればよい $this->autoRender = false;

カテゴリー: CakePHP | タグ: | コメントをどうぞ

var_dump と print_rの違い

どっちも同じようなものだと思ってたら、var_dumpは変数の型名まで含めて表示する点でprint_rよりも詳細な情報が出る。 デバッグ用途で型まで必要であればvar_dump それ以外ならprint_rと使い分けるとよいだろう。

カテゴリー: PHP | コメントをどうぞ

PHPでshort_open_tagをOnにする場合の注意

通常PHPのコードブロックは <?php ~ ?> だと思う。しかし <? ~ ?> という書き方もできる。この書き方はASPなどを意識したものと思われるが 思わぬ不具合を生む可能性があるので使わないほうがよい。 具体的にはXML宣言とかぶってしまうため、Offにしておくべきだろう。 <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?> ぶっちゃけ一回も<?タグ使ったことないんだけどね。

カテゴリー: PHP | コメントをどうぞ

CentOSのPHPにはマルチバイト対応入ってませんのであとから入れましょう

実はサーバ移行以来Pukiwikiのshowrssプラグインが文字化けしていた。 文字コードがUTF-8になったのが原因かなと思って、内部エンコード調べようとしたらmb_internal_encodingの関数がないとエラーがでていた(画面には出力されないので/var/log/httpd/error… 続きを読む

カテゴリー: CentOS, PHP | コメントをどうぞ

PHPで画面が真っ白になる時はエラーを疑え!

PHPで画面にまったく何も表示されずソースを見てもほとんど何も出力されていない時がある。 実はこれ複数原因があるが、以下見ていこう。 まずは出力の文字コードが違う場合IE6だと画面が真っ白になる。この場合はソースの表示をさせると本来出力される内容が出てくるのでその場合はエンコーディングの自動選択を選ぶ(もしくはわかっていればそのエンコードを指定する) 次にソースを見ても手がかりとなるような出力がない場合だが、コレは単純でphp.iniでエラーがApacheのエラーログに出力されるようになっているだけだ。エラー情報は開発中は画面に出たほうがうれしいのだが、運用時に出してしまうとPHPのバージョンがわかってしまったりして思わぬ攻撃の手がかりを与えることになりかねない。ほとんどのディストリビューションのデフォルトではPHPのエラーはApacheのエラーログに出力されるようになっている。 もし出力するようにしたければphp.iniの以下の場所を変えて、Apacheを再起動すればよい。 display_errors = Off←On RedHat系のディストリビューション(Fedora,CentOS)であればエラーログの場所は下記にあるはず。 /var/log/httpd/error.log VineLinuxではApacheのバージョンが1か2によるが /var/log/apache/error.log /var/log/apache2/error.log 開発サーバーであれば画面に表示するように変更してもいいだろう(というか変更すべき!)

カテゴリー: PHP, 人気記事 | コメントをどうぞ