PECL::GeoIPを試してみた – Do You PHP はてな
結局のところ、pearのライブラリを入れれば良いということです。
PECL::GeoIPを試してみた – Do You PHP はてな
結局のところ、pearのライブラリを入れれば良いということです。
PHPがPOST経由でアップロードファイルを受け取る際に、以下の様なエラーが発生。
PHP Warning: POST Content-Length of 32981482 bytes exceeds the limit of 8388608 bytes
php.iniのupload_max_filesizeを書き換えれば良いかと思ったら、解決できなかったのでメモ。php.iniの以下の設定を変える必要がある。
上の3項目は、memory_limit > post_max_size > upload_max_filesizeの関係にあるので、upload_max_filesizeだけを変えてもpost_max_sizeなどで制限が掛かってしまう。例えば、100MBまで許可する場合は、いずれの項目も100MB以上に設定する必要がある。
CakePHPを使ってケータイサイトをつくっているのだが、Mac上でケータイをシミュレーションするのに便利だったfirefoxのプラグイン。
HTTPのHeaderを置き換えることができるプラグイン。「かんたんログイン」などを実装する際に、携帯端末IDを語るのに使える。また、USER-AGENTも置き換えるので合わせて設定すると、ケータイ端末の振りをかなりできる。
ケータイではCookieを使えないので、通常のセッション管理ができない。URLにセッションIDを埋め込むなどの対策が必要になる。1.2での設定方法をまとめてみる。
/m/以下をケータイ用に振り分けことを前提に。
//Configure::write('Session.save', 'php'); Configure::write('Session.save', 'usersession'); //こちらに修正
セッションを扱う箇所を独自コードに置き換えることができる。コードは、app/config/usersession.phpに
記述する。
新規で作成。
<?php if (!isset($_SESSION)) { if (function_exists('ini_set')) { if(defined('MOBILE')){ //ケータイ用だったら ini_set('session.use_trans_sid', 1); //GETリクエストにセッションIDを自動的に埋め込む設定を有効 ini_set('session.use_cookies', 0); //Cookieの使用を無効 }else{ ini_set('session.use_trans_sid', 0); //無効 ini_set('session.use_cookies', 1); //有効 } } } ?>
MOBILEという変数は、別クラスで設定する
<?php class AppController extends Controller { var $needAuth = false; var $helpers = array('html', 'form', 'time'); function beforeFilter() { //ケータイ用の振り分け if(isset($this->params['prefix'])){ $this->layout = 'mobile_'.$this->layout; } $auth = $this->Session->read( 'auth' ); $this->set( "auth", $auth ); if( $this->needAuth ){ if( empty( $auth ) ){ if(defined('MOBILE')){ //ケータイへの振り分けがされていたら、ケータイ向けのログイン画面へ $this->redirect( "/m/users/login" ); }else{ $this->redirect( "/users/login" ); } return ; } } if(defined('MOBILE')){ //ケータイ用にSJISに文字コード変換 mb_convert_variables('UTF-8','SJIS-win',$this->data); } ob_start(); //文字コード変換用の処理開始 parent::beforeFilter(); } function __construct() { // /m/がURLの中にあった場合、MOBILE変数を設定。このフラグを各クラスで判別 if(ereg("^/m/",$_SERVER['REQUEST_URI'])){ // もし、URLが/<em>servicename</em>/m/だったら、"^/<em>servicename</em>/m/" define('MOBILE',1); } parent::__construct(); } function afterFilter() { parent::afterFilter(); $out = ob_get_clean(); if(defined('MOBILE')){ $out = mb_convert_encoding($out,'SJIS-win','UTF-8'); //ケータイからの入力をSJISからUTF-8に変換 } echo $out; } //redirect メソッド書き換え function redirect($url,$status = null) { if(defined('MOBILE')){ $url = $url."?".session_name()."=".session_id(); //転送先URLにセッションIDを自動付加 } parent::redirect($url,$status); } } ?>
GETでは、自動的にセッションIDが埋め込まれるが、POSTではセッションIDの埋め込みを明示的に行う必要がある。<form>で以下のように記述する。
<form action="foo?<?php session_name()."=".session_id();?>" method="POST">
参考サイト:
AMFPHPからUTF-8で出力されるはずなのに、Flex側で文字化け。PHPからの出力では、文字化けが発生していないので、AMFPHP側を疑うと、gateway.phpでいらない文字コード変換をしている事が判明。
//Read above large note for explanation of charset handling
//The main contributor (Patrick Mineault) is French,
//so don't be afraid if he forgot to turn off iconv by default!
$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");
127行目のsetCharsetHandlerをコメントアウトして、無事に解決。DBも、PHPの内部コードもUTF-8の場合は、この一文をコメントアウトすべしのようだ。
CodeZine:PHPにおける日付と時刻の混乱(ユリウス日, PEAR Date, DateTime, エポックタイムスタンプ)
PHP5で、DateTime型などが追加されたりしたが、厳密な日付処理は骨が折れるようだ。特に、歴史上の日付や未来へ向けたシミュレーション時の日付管理は、気をつけなければならないようだ。グレゴリ暦とユリウス暦の切り替えのネタなどは、興味深い。明治政府は、本当にトリッキー。
cl.pocari.org – xml 文章を配列やオブジェクトにしてくれる PEAR::XML_Serializer
PHP5では、内部ライブラリに同じようなものが入っているらしい。
にわかに、FlashコンテンツのCMSとして研究しているWordPressの最新バージョン2.3からデフォルトでtag機能が搭載された模様。
これまで使っていたタグ機能を提供していたプラグインのデータからもimportができるようだ。
Tagging importers from the popular tagging plugins are included:
* Ultimate Tag Warrior
* Jerome’s Keywords
* Simple Tags
* Bunny’s Technorati Tags
PostgreSQLのcreatedbで文字コードを指定する方法
$ createdb hogehoge -E UTF-8
【PHP TIPS】 53. まだ、PEAR::DBをお使いの方へ:ITpro
PHPからDBを使うときにはPEAR::DBをお使いの方もまだたくさんいらっしゃると思います。しかし、PEAR::DBのマニュアルにも「This package been superseded by MDB2 but is still maintained for bugs and security fixes」(このパッケージの代わりにMDB2の使用が推奨されますが、バグの修正、セキュリティフィックスは引き続き行われます。)と書かれているとおり、今後はPEAR::MDB2をお使いになることをお奨めいたします。
ということらしい。便利なメソッドも用意されていているようだ。