2013年9月26日木曜日

[cakephp] デバッグレベルが0でもエラーログを取る

以下をbootstrap.phpに書く
1
2
3
4
5
6
if (Configure::read('debug') == 0) {
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    ini_set('error_log', LOGS . DS . 'php_error.log');
}

2013年9月25日水曜日

[cakephp] リダイレクトするview

1
2
3
4
5
6
7
<?php $this->Html->scriptStart(array('inline'=>false,'safe'=>false)); ?><!--
setTimeout("link()", 0);
function link()
{
 location.replace('http://www.example.net/thanks.html');
}
//--><?php $this->Html->scriptEnd(); ?>

2013年9月13日金曜日

さくらインターネットで複数のバージョンのPHPを使う。

もしくは、拡張子が.htmlのままPHPのスクリプトを実行させる
最近はphpが5.3以上というフレームワークやwebアプリが増えてきたのでとうとう
さくらインターネットのphpの標準が5.2から5.4になった。
しかし、まだphp5.2でしか動かない古いwebアプリが残っていてphp5.4にすると
そのサイトはワーニングを出すようになってしまった。
せっかくphpが5.4になったのに古いwebアプリの為にダウングレードするのは
大変残念なので、古いwebアプリだけ古いphpを使うようにしてみた。

コマンドラインでの作業になりますので十分注意をすること。
sshで自分のサーバーにログインします。
windowsならputtyとかPoderosaとか、
Macならcodaとかターミナルから
ssh <自分のアカウント>@<自分のアカウント>.sakura.ne.jp
と打ち込めばログインできます。

1
2
3
4
5
6
7
8
%ls -l /usr/local/php
total 16
drwxr-xr-x  7 root  wheel  512 Jul 31 13:11 4.4.9
drwxr-xr-x  7 root  wheel  512 Jul 31 13:11 5.2.17
drwxr-xr-x  7 root  wheel  512 Jul 31 13:11 5.3.27
drwxr-xr-x  7 root  wheel  512 Jul 31 13:12 5.4.17
lrwxr-xr-x  1 root  wheel    6 Jul 23 15:57 cpanel -> 5.2.17
lrwxr-xr-x  1 root  wheel    6 Aug 28 12:02 default -> 5.4.17
5.2.17 5.3.27 5.4.17 が表示された。それぞれphpの5.2 5.3 5.4である。
それぞれのディレクトリ下にbinディレクトリがありその下の目的のものがある。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%ls -l /usr/local/php/5.2.17/bin 
total 71024
-rwxr-xr-x  1 root  wheel       854 Jul 23 15:58 pear
-rwxr-xr-x  1 root  wheel       875 Jul 23 15:58 peardev
-rwxr-xr-x  1 root  wheel       791 Jul 23 15:58 pecl
lrwxr-xr-x  1 root  wheel        12 Jul 23 15:56 php -> php-mysql5.5
lrwxr-xr-x  1 root  wheel        16 Jul 23 15:56 php-cgi -> php-cgi-mysql5.5
-rwxr-xr-x  1 root  wheel  17975222 Jul 23 15:55 php-cgi-mysql4.0
lrwxr-xr-x  1 root  wheel        16 Jul 23 15:56 php-cgi-mysql5.1 -> php-cgi-mysql5.5
-rwxr-xr-x  1 root  wheel  18324512 Jul 23 15:56 php-cgi-mysql5.5
-rwxr-xr-x  1 root  wheel      2993 Jul 23 15:56 php-config
-rwxr-xr-x  1 root  wheel  17977643 Jul 23 15:55 php-mysql4.0
lrwxr-xr-x  1 root  wheel        12 Jul 23 15:56 php-mysql5.1 -> php-mysql5.5
-rwxr-xr-x  1 root  wheel  18329621 Jul 23 15:56 php-mysql5.5
-rwxr-xr-x  1 root  wheel      4528 Jul 23 15:56 phpize
php何とかがいっぱいある。このなかでファイルサイズの小さい物はリンクなので
大きいものを探す。どうやら本体はphp-cgi-mysql5.5のようだ
これをwww/cgi-binにコピーする。

wwwに移動
ディレクトリcgi-binを作る
cgi-binに移動
先ほどlsで確かめたファイルをコピーする
1
%cp /usr/local/php/5.2.17/bin/php-cgi-mysql5.5 php52.cgi
5.3なら/usr/local/5.3.27/bin/php-cgi-mysql5.5

webサイトのrootの.htaccessに
1
2
Action php52-script /cgi-bin/php52.cgi
AddHandler php52-script .php
の2行を追加する。

.htaccessが無ければ作って保存する。

OSのバージョンが変わったらphp52.cgiを作り直す
そうしないと「Internal Server Error」が出ます。
AddHandler php52-script .php .html
とすると、拡張子が.htmlのままPHPのスクリプトを実行させる時にも使えます。

マルチドメインの場合はフォルダーの下にcgi-binを作り
同じようにコピーして.htaccessを置きます。