PHPExcelインスト
http://www.codeplex.com/PHPExcel/Release/ProjectReleases.aspx?ReleaseId=5967
Files PHPExcel 1.5.0をクリックして、ダウンロード
展開した、Classes以下のファイル(PHPExcel.php, PHPExcel)を
c:\php\PEAR
にコピー。
apache 後からbuild in
apache DSO
# cd /usr/local/src/httpd-2.0.56/modules/mappers
# /usr/local/apache/bin/apxs -ic mod_rewrite.c
APCのインストール
http://it.kndb.jp/entry/show/id/482 さんより
#phpizeとapxsのインストール
$yum install php-devel http-devel#APCをDL→展開
#http://pecl.php.net/package/apc から最新を。
$ wget APCのファイル
$ tar -zxvf APCのDLしたファイル
$ cd APCの展開したディレクトリ
$ phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025$ .configure --enable-apc
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
〜〜〜中略〜〜〜checking whether stripping libraries is possible... yes
configure: creating ./config.status
config.status: creating config.h$ make install
$ vi /usr/local/etc/php/extension.ini
/bin/sh /root/APC-3.0.15/libtool --mode=compile gcc -I. -I/root/APC-3.0.15 -DPHP_ATOM_INC -I/root/APC-3.0.15/include -I/root/APC-3.0.15/main -I/root/APC-3.0.15 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O
〜〜〜中略〜〜〜See any operating system documentation about shared libraries for
more information, such as the ld[1] and ld.so[8] manual pages.
- -
Installing shared extensions: /usr/lib/php/modules
#php.iniの最下行に設定追記
#viで最下行に行くには"Shift"+"g"
$vi /etc/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
[apc]
extension=apc.so
apc.enabled=1
apc.optimization=1
apc.ttl=10
apc.gc_ttl=10
cakePHP アソシエーションしてるHasManyを条件文に
HasManyしているモデルを、コントローラー内で
動的に条件を指定してやりたい。
$this->[モデル名]->hasMany['関連モデル名']['conditions'] = '関連モデル名.del_flag = 0';
$data = $this->[モデル名]->findAll());
これでいけましたよ。と。
$this->[モデル名]->hasMany['関連モデル名']['conditions'] = null;
で戻してやったほうがいいかな。
fgetcsvで、日本語が入らない
エクセルデータで作ったcsvファイル(shift-jis)
を、phpでアップロードして、UTF-8に変換して
DBに突っ込むというところで、
日本語が消える現象が起こった。
$buf = mb_convert_encoding(file_get_contents($upload_data[0]['dir'].$upload_data[0]['file_name']), "UTF-8", "SJIS");
$handle = tmpfile();
fwrite($handle, $buf);
rewind($handle);while($row = fgetcsv($handle)){
}
このとき、fgets()でデータを取った場合だと、ちゃんと入るのに、fgetcsv()の場合
日本語が入らない(正確には、一部入ってるものもある)
windowsのローカル環境では問題ないのに、サーバ(Linux)では駄目。
これは、fgetcsv()関数が
「注意: この関数はロケール設定を考慮します。…」
であるためで、
setlocale(LC_ALL,'ja_JP.UTF-8');
をソースの初めに書いておくことで、対応できた。
実行環境によって、異なるので、ソースに書いておいたほうが
いいんでしょうね。
もっと、うまい方法もありそうだが。
CakePHP モデルにカラム追加したのに、モデルで認識してくれない。
開発環境で、モデルにカラムを追加して
save()
したら、うまく入ったのに、
本番環境では、モデルが、新しいカラムを認識してくれない。
これにはまった。
結論から言うと、
config.phpの
define('DEBUG', 0);
になってたのが原因。
これによって、モデルをキャッシュとして持ってるので、
define('DEBUG', 1);
にして、キャッシュを持たないようにすれば、なおった。