PHP(CakePHP)の開発でうまく動作しない場合の解決方法について何点か紹介します。
– CakePHPのモデルのsave()メソッドでレコードを更新したときに更新日付(modified列)が更新されない場合
$data[“modified”] = null; // modifiedにnullを設定しますと更新されます
$this->Data->save($data);
– ディレクトリが存在する状況でCakePHPを動作されるためのmod_rewriteの書き方
CakePHPのデフォルトのmod_rewriteではディレクトリが存在する場合、ルールを適用しない設定になっています。
# 以下デフォルトの.htaccess
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
/sp/などディレクトリが存在する状況でもルールを適用する場合は、
該当のディレクトリ用のルールを追記します。
# /sp/にもルールを適用
RewriteCond %{REQUEST_FILENAME} “sp\/$”
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
– メールが送信先に届かない場合
一部の送信先にメールが正常に送信できない場合、
「Return-Path」を設定しますことによりうまく届くことがあります。
mb_send_mailなどでは、引数で設定可能ですが、
それではうまくいかない場合があります。
その場合
ini_set(“sendmail_from”, $from)
も指定します。
$parameter=”-f test@test.co.jp”;
$from = “test@test.co.jp”
ini_set(“sendmail_from”, $from) //
mb_send_mail ($to , $subject , $body $headers , $parameter);
– SJIS・EUCをUTF8変換時の文字化け
mb_convert_encodingで文字化けする場合、
「SJIS」の代わりに「SJIS-win」
「EUC-JP」の代わりに「eucJP-win」
を指定すると文字化けは解消します。