FuelPHP 1.5 スマホ用テンプレートに切り替える
■FuelPHPで保守性の高いマルチデバイス対応を考える
上記ブログの方を参考にさせていただきました。
■課題
・スマホの見た目にしたい
・テンプレートをわけるんだろうけど、どうやるかワカンネ
・ググったら上記ブログを発見。簡単に解決。最高っす。
■対応内容
①まずはbootstrapにviewを読むCoreファイルの読み込み先を記述
vi bootstrap.php
Autoloader::add_classes(array(
// Add classes you want to override here
'View' => APPPATH.'classes/view.php', // これを追加
));
②view.phpを追加
・ガラケーとか考えるの面倒なので、全部モバイル扱いということで
/mb配下にモバイルテンプレートを突っ込むこととした。
・ipadはPC扱いにした。
cd classes
vi view.php
<?php
class View extends \Fuel\Core\View
{
public function set_filename($file) {
if (Agent::browser() != "iPad" && Agent::is_mobiledevice()){
$file = 'mb/' . $file;
}
return parent::set_filename($file);
}
}
③最後にviews配下にディレクトリを配置
cd views
mkdir mb
cp template.php mb/ ←tenplate.phpもmb配下を見に行くようになる。
以上でモバイル端末はmb配下のテンプレートを読むようになる!
FuelPHP 1.5 データベース接続設定
■課題
fuel/app/config/development/db.php
に接続先の設定をしているのに。
なぜかMysqlにつながらない。
tmp/mysql.sockを見に行くからだ。
私の環境では/var/lib/mysql/mysql.sockにソケットを置いている。
socketの向き先を変更しなければならない。
■対応方法
socket='/var/lib/mysql/mysql.sock'を
指定すればよいかと思ってやってみたが、ダメだった。
以下のようにdsn内に設定を記述したら動いた。
vi fuel/app/config/development/db.php
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=sample_db;unix_socket=/var/lib/mysql/mysql.sock',
'username' => 'hoge',
'password' => 'fuga',
),
),
);
FuelPHP 1.5 インストール
■環境
php5.4.14
fuelphp1.5 ←これを入れる。
DocumentRoot /home/game/app/public
■対応内容
cd /home
mkdir game
cd game
wget --secure-protocol=auto --no-check-certificate http://fuelphp.com/files/download/19
unzip fuelphp-1.5.zip -d app
cd app
vi fuel/app/config/config.php
以下を配列の中に追加
return array(
'index_file' => false,
'language' => 'ja',
'locale' => 'ja_JP.UTF-8',
'default_timezone' => 'Asia/Tokyo',
);
php oil refine install
完了
必要であればApacheをrestart
php のバージョンを同居させる簡単な方法
■課題
php5.2はソースからインストールされている状態。
この状態でphp5.4をソースからインストールすると
パスが勝手に5.4のほうを向くようになってしまう。
php5.4はmake installしてしまったので
切り戻しなどもできなくて困った。
php5.2からmake installしなおしたらパスが戻った。
ならばcpしているソケットファイルで向き先が変わっていると予想。
以下の対応方法で同居(というか切り替え可能状態)に成功。
■対応方法
問題はapache/modules/libphp5.soが上書きされてしまうために起こる現象。
つまり、libphp5.soを切り替えられるようにしてやればよい。
make したphp5.4からソケットファイルをもっていく。
cp .libs/libphp5.so /usr/local/apache2.2.17/modules/libphp5-php5.4.14.so
もともとあったlibphp5.soをリネームして切り替えられるようにしておく。
cd /usr/local/apache/modules
-rwxr-xr-x libphp5-php5.2.14.so ←もともとあったソケットをリネーム
-rwxr-xr-x libphp5-php5.4.14.so ←コピーしてもってくる
lrwxrwxrwx libphp5.so -> libphp5-php5.2.14.so ←シンボリックリンク
このシンボリックリンクを切り替えれば向き先が変わる。
ln -snf libphp5-php5.4.14.so libphp5.so
最後にapache restartするのを忘れずに。