Yiiを使って作成したアプリをさくらのサーバーに乗せた。
開発環境はScientificc Linux 6.0だったので色々問題が出るかと思ったけど
案外あっさりいった。
唯一ハマったところはcronのところで
CreateConsoleApplication()が正しく動かなかった。
原因はphpのバージョンがデフォルトで5.1系か5.2系なので
__DIR__が使用出来なかったため。
コントロールパネルからphpのバージョンを5.3.6にして完了。
あと目立った変更箇所は.htaccessにRewriteBase / を追加したくらい。
2011/09/01
2011/08/31
Content-Disposition
ブラウザ内での表示
Content-Disposition: inline;
ダウンロードさせる
Content-Disposition: attachment;
filename=hoge
を追加でダウンロードの際のファイル名を指定出来る
Content-Disposition: inline;
ダウンロードさせる
Content-Disposition: attachment;
filename=hoge
を追加でダウンロードの際のファイル名を指定出来る
2011/08/17
jQueryの$.postでphpに配列を渡す方法
var id = [1,2,3,4];
$.post(
'url' ,
{id : id} ,
function(){
~~~~中略~~~~
);
で裏側のphpにて$_POSTを見ると
$_POST["id"]に4が入っていて配列として扱えていませんでした。
$.postによるquery_stringは
id=1&id=2&id=3&id=4
となっており、後ろのものが優先されてそれしか取れていないようです。
下記のようにすれば配列を送ることが出来ました。
×{id : id}
○{"id[]" : id}
これでquery_stringが
id[]=1&id[]=2&id[]=3&id[]=4
となりphpでも配列として扱えます。
$.post(
'url' ,
{id : id} ,
function(){
~~~~中略~~~~
);
で裏側のphpにて$_POSTを見ると
$_POST["id"]に4が入っていて配列として扱えていませんでした。
$.postによるquery_stringは
id=1&id=2&id=3&id=4
となっており、後ろのものが優先されてそれしか取れていないようです。
下記のようにすれば配列を送ることが出来ました。
×{id : id}
○{"id[]" : id}
これでquery_stringが
id[]=1&id[]=2&id[]=3&id[]=4
となりphpでも配列として扱えます。
2011/08/12
【Yii】コントローラー間で共通のviewを使用する方法
例えばsiteコントローラ内で
$this->render("test");
とすると
views/site/test.php
が使用されます。
他のコントローラーでも共通で使用できるviewは
どうすればいいのかを探していたのですが
renderの第一引数を"/"から始めればviews/のファイルが読まれるようです
先ほどの例でいうと
$this->render("/test");
とすると
views/test.php
が使用されます。
$this->render("test");
とすると
views/site/test.php
が使用されます。
他のコントローラーでも共通で使用できるviewは
どうすればいいのかを探していたのですが
renderの第一引数を"/"から始めればviews/のファイルが読まれるようです
先ほどの例でいうと
$this->render("/test");
とすると
views/test.php
が使用されます。
2011/07/15
codeigniterでpostgresqlの設定 database.php
$db['test']['username'] = "username";
$db['test']['password'] = "passwd";
$db['test']['database'] = "db_name";
$db['test']['dbdriver'] = "postgre";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = TRUE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
pconeect 持続的接続は使用しない方がいい。
OSのプロセスが残って不安定になる。
$db['test']['password'] = "passwd";
$db['test']['database'] = "db_name";
$db['test']['dbdriver'] = "postgre";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = TRUE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
pconeect 持続的接続は使用しない方がいい。
OSのプロセスが残って不安定になる。
ラベル:
codeigniter,
postgresql
2011/07/09
Yiiでマルチバイト文字でのバリデーションを行う方法
Yii 1.1から以下のようにルールにencodingを渡すことにより
マルチバイト文字での長さチェック等ができるようです。
array('string', 'length', 'max'=>10 , "encoding" => Yii::app()->charset)
参考URL
http://www.yiiframework.com/forum/index.php?/topic/2721-yii-multibyte-safe/
マルチバイト文字での長さチェック等ができるようです。
array('string', 'length', 'max'=>10 , "encoding" => Yii::app()->charset)
参考URL
http://www.yiiframework.com/forum/index.php?/topic/2721-yii-multibyte-safe/
2011/07/08
codeigniterでpostgresqlで文字化けが治らない場合の対処
またしてもcodeingiterのポスグレのバグを発見しました(通算3つ目)
・phpからpostgresにclient_encodingを送っていない
postgresqlはアプリケーション側でclient_encodingを設定していないと
設定ファイルに書いてあるデフォルトのclient_encodingに変換して結果を返してきます。
修正箇所は
system/database/drivers/postgre/postgre_driver.php
145行目 db_set_charset
中身は無しでコメントにて
// @todo - add support if needed
ふざけんなと( ゚Д゚)ヴォケ!!
pg_set_client_encoding($this->conn_id , $this->char_set);
これで文字化けが直りました。
しかし本当にcodeigniterのpostgresドライバは信用出来ない。
他にも色々バグありそう
・phpからpostgresにclient_encodingを送っていない
postgresqlはアプリケーション側でclient_encodingを設定していないと
設定ファイルに書いてあるデフォルトのclient_encodingに変換して結果を返してきます。
修正箇所は
system/database/drivers/postgre/postgre_driver.php
145行目 db_set_charset
中身は無しでコメントにて
// @todo - add support if needed
ふざけんなと( ゚Д゚)ヴォケ!!
pg_set_client_encoding($this->conn_id , $this->char_set);
これで文字化けが直りました。
しかし本当にcodeigniterのpostgresドライバは信用出来ない。
他にも色々バグありそう
2011/07/05
yiiでwhere in でデータを取得
ちょっと詰まった。
フォーラムの記事を参考にして解決
problem with createInCondition
$criteria = new CDbCriteria();
$criteria->addInCondition('id', array(1,2,3));
$result=User::model()->findAll($criteria);
createInCriteria()の第4引数にパラメータうんぬんって書いてあるけど
第4引数はprefixでした。
使ってないので僕の場合は不要。
フォーラムの記事を参考にして解決
problem with createInCondition
$criteria = new CDbCriteria();
$criteria->addInCondition('id', array(1,2,3));
$result=User::model()->findAll($criteria);
createInCriteria()の第4引数にパラメータうんぬんって書いてあるけど
第4引数はprefixでした。
使ってないので僕の場合は不要。
2011/06/28
YiiでURLからindex.phpを消す方法
.htaccessを変更するだけだとウィジェットで作られるリンク(デフォルトのテンプレートで使われている)
にはindex.phpが付いたままにななるので
config/main.php
'urlManager' => array(
'showScriptName' => false ,
.....
を追加
にはindex.phpが付いたままにななるので
config/main.php
'urlManager' => array(
'showScriptName' => false ,
.....
を追加
2011/06/24
2011/06/23
centOSのvsftpdの設定で詰まったorz
centOSのvsftpdの設定でつまりました。
ひと通りvsftpd.confの設定を行ったあとffftpから接続しようとすると繋がらない。
色んな設定を試してみたけど解決しない。
※ここまで1時間
接続自体はできているみたいなのでプロンプトからftpで接続してみる
ftp example.com
つながるじゃないか!
普通にコマンドも通る。。。
受動モードの場合だと上手くいかないようだ。
そりゃそうだ。ポート開けてねーよ。
vsftpd.confに
pasv_min_port=60000
pasv_max_port=60100
iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60000:60100 -j ACCEPT
両方再起動すると無事ftpを使えるようになりました。
あー。無駄な時間使った
ひと通りvsftpd.confの設定を行ったあとffftpから接続しようとすると繋がらない。
色んな設定を試してみたけど解決しない。
※ここまで1時間
接続自体はできているみたいなのでプロンプトからftpで接続してみる
ftp example.com
つながるじゃないか!
普通にコマンドも通る。。。
受動モードの場合だと上手くいかないようだ。
そりゃそうだ。ポート開けてねーよ。
vsftpd.confに
pasv_min_port=60000
pasv_max_port=60100
iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60000:60100 -j ACCEPT
両方再起動すると無事ftpを使えるようになりました。
あー。無駄な時間使った
2011/06/07
codeigniterでpostgresqlのlike検索にバグがある件
基本的にMySQL向けに作られているフレームワークだとしてもこれはさすがにひどいでしょ。。。
バグは2点みつけてます。
CIのバージョンは1.7.3です。
①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。
②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。
/database/drivers/postgre/postgre_driver.php
299行目
str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正
置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。
バグは2点みつけてます。
CIのバージョンは1.7.3です。
①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。
From
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_char);
To
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_chr);
②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。
/database/drivers/postgre/postgre_driver.php
299行目
$str = str_replace( array('%', '_',$this->_like_escape_chr),
array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_' , $this->_like_escape_chr.$this->_like_escape_chr),
$str);
str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正
$str = str_replace( array($this->_like_escape_chr ,'%', '_'),
array($this->_like_escape_chr.$this->_like_escape_chr ,$this->_like_escape_chr.'%', $this->_like_escape_chr.'_' ),
$str);
置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。
ラベル:
bug,
codeigniter,
php
2011/05/28
CodeIgniterの_remap
CodeIgniterの_remapメソッドでパラメータを指定する方法
この方法でも出来そうだったけどフレームワーク部分に手を加えたくなかったのでこうしてみた
多分大丈夫のはず
この方法でも出来そうだったけどフレームワーク部分に手を加えたくなかったのでこうしてみた
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
call_user_func_array(array(&$this, $method), array_slice($this->uri->rsegments, 2));
}
}
多分大丈夫のはず
2011/05/14
Yiiでgiiモジュールアクセスで403になる場合の回避法
公式サイトのスキャフォールディングに
/webroot/application/protected/config/main.php
に以下のコードを追加と書いてあるので追加します。
それを外すだけです。
これだけだとローカルホスト以外の場合アクセス出来ないので
制限を外す場合
'ipFilters'=>array('*'),
とすると全てのホストからアクセス出来ます。
'ipFilters'=>array('127.0.0.1','::1'),
/webroot/application/protected/config/main.php
に以下のコードを追加と書いてあるので追加します。
return array(giiの部分はもともと書いてありコメントアウトになっているので
......
'import'=>array(
'application.models.*',
'application.components.*',
),
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'pick up a password here',
'ipFilters'=>array('127.0.0.1','::1'),
),
),
);
それを外すだけです。
これだけだとローカルホスト以外の場合アクセス出来ないので
制限を外す場合
'ipFilters'=>array('*'),
とすると全てのホストからアクセス出来ます。
'ipFilters'=>array('127.0.0.1','::1'),
2011/02/02
2011/01/29
WindowsXPインストール後にインストールしたソフト一覧
メモ
秀丸
explzh
google chrome
google desktop
google 日本語入力
Microsoft Security Essentials
まだもうちょっとだけ続くんヂャ
秀丸
explzh
google chrome
google desktop
google 日本語入力
Microsoft Security Essentials
まだもうちょっとだけ続くんヂャ
2011/01/28
登録:
投稿 (Atom)