Category: php

10月 06 2011

cssやjsファイルを圧縮するCodeIgniterライブラリー

cssやjsファイルを圧縮して1ファイルにしてくれる便利ライブラリー
https://github.com/bstrahija/assetsからダウンロード

解凍するとconfig、helpers、librariesのディレクトリができる
そのうちconfig/autolod.phpは書き換えてなければ上書きしてもいいが以下の部分を変更する

//$autoload['libraries'] = array();
$autoload['libraries'] = array('assets');

//$autoload['helper'] = array();
$autoload['helper'] = array('url', 'file', 'directory', 'string', 'assets');

//$autoload['config'] = array();
$autoload['config']  = array('assets');

autoloadのlibraries,helper,configを変更

デフォルトではドメイン直下のassetsの
assets/css
assets/js
が読み込まれ、
assets/cachにキャッシュされる。

その辺を変更したい場合はapplication/config/assets.phpを変更。

viewでdisplay_css display_jsをセット



≪参考サイト≫
Javascript・CSSを圧縮・結合するCodeIgniterライブラリ「Simple assets」

10月 06 2011

CodeIgniterでの.htaccess例


	RewriteEngine on
	RewriteCond $1 !^(index\.php|robots\.txt|file)
	RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond $1 !^(index\.php|robots\.txt|file)でindex.php・robots.txt とfileディレクトリへのアクセスを除外。
それ以外はRewriteRule ^(.*)$ /index.php/$1 [L] 全てindex.phpですよ。ってことです。

これでfile/image やfile/cssやfile/jsに画像・css・jsを配置しておけばOK

9月 27 2011

CakePHP初期設定

まずCakePHP: 高速開発 php フレームワークここからダウンロード。
今回は1.3.12 安定版をダウンロードしました。そして解凍。

次に開発したい場所へ中身をコピー。今回はlocalhosot/testでの場合で設定
testに
「app」 「cake」 「vendor」 「plugins」.htaccess index.phpが出来る。「」はフォルダー

ヴァーチャル風にhttp://test.localhost/でアクセスしたい場合はApacheのhttpd.confを編集。
C直下にlocalhostがある場合のパス


	DocumentRoot C:/localhost/test/
	ServerName test.localhost

windowsで開発していると.htaccessが使えないのでwindowsで .htaccess を使うを参考にする

とりあえずApacheを再起動してhttp://test.localhost/へアクセスしてみる。赤いエラーが出てなければ良いとのこと。黄色いエラーは今後直していくので、赤いエラーが出た場合はここまでの設定を見直す。

続いて黄色いエラーをなくす作業


Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 694]

Notice (1024): Please change the value of 'Security.cipherSeed' in app/config/core.php to a numeric (digits only) seed value specific to your application [CORE\cake\libs\debugger.php, line 698]

この2つは暗号化するハッシュ文字の設定。初期値だとセキュリティ的に問題があるので変更したほうがいいですよってことのようだ。

それぞれapp/config/core.phpの204行目、209行目を適当な英数字に変更するとエラーがなくなる。

つづいて


Cake is NOT able to connect to the database.

これは接続できるデーターベースがありませんよ~~~ってことですね。
データーベースを使わなければこのままで問題ない。使う場合は「app/config/database.php.default」を「app/config/database.php」にリネームして76行目あたりを環境に合わせて編集するようですが、とりあえず詳しくは後で設定します。

まずはページを表示したい。

http://test.localhost/test/に「ようこそ!CakePHP」と表示させてみよう!!!

まずhttp://test.localhost/のtestへアクセスすると/app/controllers/にあるコントローラーのtest_controller.phpが呼び出される。コントローラーは「_controller.php」と名づけるのがルール。
その/app/controllers/test_controller.phpにクラスを作るクラス名にもルールがある。
クラス名はファイル名のtest_controllerを「TestController」とし「AppController」を継承する。

class TestController extends AppController {
    public $name = "Test";
    public $uses = null;
    public $autoRender = true;
    function index(){
    	 $this->set("content", "ようこそ!CakePHP");
    }

    function hello(){
        $this->set("content", "Hello World!");
    }
}

public $nameにはコントローラ名。public $usesはモデルを指定もモデルはDBなどの操作に使用するので今回はnull。public $autoRenderはビュワーを指定します。

この状態でhttp://test.localhost/test/へアクセスしてみると

Missing View

Error: The view for TestController::index() was not found.

Error: Confirm you have created the file: D:\localhost\dewks\app\views\test\index.ctp

Notice: If you want to customize this error message, create app\views\errors\missing_view.ctp

と表示される。http://test.localhost/test/へアクセスするとTestControllerクラスのfunction indexが呼び出される。/test/index.htmlや/test/index.phpってイメージですね。
それでindex用のビュワーが無いですよ!!!って怒られました。。。

そこで/app/views/以下に「test」フォルダーを作りそのtestの下にindex.ctpを作ります。拡張子は.ctp。
/app/views/test/index.ctpを以下のように作成します。


すると「ようこそ!CakePHP」と表示されます。ヘッダーやフッターはデフォルトで成型されてます。

ちなみにhttp://test.localhost/test/hello/へアクセスすると「 function hello」が呼び出されます。/app/views/test/index.ctpと同じように/app/views/test/hello.ctpを作ってあげれば「Hello World!」と表示されます。

じゃトップページhttp://test.localhost/はどうするの?どうもトップページだけ勝手が違うみたいです。
トップページでは/app/controllers/pages_controller.phpがコントローラーのようです。index_controller.phpでは無いので注意。さらにPagesControllerのfunction displayが呼び出される設定。それらは「/app/config/routes.php」で行われているようですので気になるときは見てみましょう。
そこで/app/controllers/pages_controller.phpを作ってみます。

class PagesController extends AppController {
    public $name = "Pages";
    public $uses = null;
    public $autoRender = true;

    function display(){
        $this->set("content", "Top page");
    }
}

このままでは当然ビュワーが無いと怒られます。いままでの流れで行くと/app/views/pages/display.ctpを作ってあげれば良いのだろう。/app/views/pages/はすでに存在するのでdisplay.ctpを作ってみる。中身は/app/views/test/index.ctpと同じ。
するとちゃんと「Top page」と表示されました!!!

初期設定としては、まずここまで!

≪参考サイト≫
PHPフレームワーク「CakePHP」入門
CakePHPを使えるようにしよう

7月 06 2011

レンタルサーバーでPEARを使う

今回はsixcoreで試す
まずhttp://pear.php.net/go-pearでgo-pearをダウンロードしてFTPなどでgo-pear.phpとしてUPする

http://********/go-pear.phpでアクセス

Welcome to go-pear 1.1.6!
と出てくるので下の方にあるNext >> へ進む
進んだ先でインストール先を設定

1. Installation prefix ($prefix)を/home/***/***/php    
11.php.exe path, optional (CLI command tools)を/usr/bin/php5.3

この2つを変更
1.はPEARのインストール先、Webでアクセスできないpublic_htmlより上がいい
11.はphpのコマンドパス環境にあわせて

この二つを設定したらインストール!!!
・・・・・
・・・・・

Installation Completed!
と出たらPEARのインストール完了!!!
続いてパッケージをインストール
PEARをインストールしたディレクトリにindex.phpがあるのでそれをダウンロード
8行目あたりに$pear_dir の設定があるのでそれをPEARのディレクトリにする

$pear_dir = '../php/PEAR'; // default of install

そしてpear.phpなんて名前でUp

http://********/pear.phpへアクセス

Quick-install a packageの部分にパッケージ名を入れてインストールできる

インストールが終わったらgo-pear.phpとpear.php削除するのを忘れないように!!!

《参考サイト》
sixcoreサーバーでPEARインストール

6月 23 2011

PHP Warning: Header may not contain more than a single header, new line detected. in


と表示させようとしたら。。。。。。

PHP Warning:  Header may not contain more than a single header, new line detected. in

なんてエラーが。。。。。。。

Header?????
調べてみるとなんだか
「HTTPヘッダーは単純に、改行を挟むだけで、複数のヘッダーを送れてしまうため、改行が含まれている文字列はエラーとするように PHP4.4.2 または 5.1.2 以降で変更になりました。」
とかなんとか……あまり関係ないなぁ
とりあえず


これで表示されたが原因は不明だ。。。。。

環境によってはheaderをつけなくてはいけないのか?????

なんか気持ち悪いので入れなおしたら直った!!!!