document
SQLiteはファイル単位で扱えて、スピードも個人で使うぐらいのデータ量ならMySQLと大差ないし、PHP5ではデフォルトで入っているので使おうと思った。

しかしfedora6ではSQLite3は入っているが、phpのパッケージ設定で"--without-sqlite" となっているためphpでは使うことができない。それを解決するためのログ

方法1:phpを再コンパイル(失敗した)

Apacheとphpをyumからではなくて、ソースなどからインストールすれば問題ないが、他の機能もあるので、
http://ml.php.gr.jp/pipermail/php-users/2005-August/026878.html
http://d.hatena.ne.jp/MasaGon/20071116/1195240180

をもとにFC6用のソースパッケージ(SRPM)を取ってきて、標準のソースディレクトリにセットアップする。する方法を試した。

	$ wget http://download.fedora.redhat.com/pub/fedora/linux/core/updates/6/SRPMS/php-5.1.xxx.src.rpm
	$ su
	# rpm -Uhv php-5.1.xxx.src.rpm
	# ls /usr/src/redhat/
	BUILD  RPMS  SOURCES  SPECS  SRPM
	# cd /usr/src/redhat/SPECS
	# cp -a php.spec php.spec.original    <- 念のためバックアップ
	# vi php.spec

php.specの、'--without-sqlite' を '--with-sqlite=shared' に書き換え、コンパイルする。 しかし

# rpmbuild -ba php.spec

のときに依存関係でエラーが出たので先にいけなかった。

pdo

LinuxでSQLiteと使うときの注意

ただfedoraでの問題かも

windowsからのアップロード

windowsのSQLiteで作ったDBをLinuxにアップロードして、LinuxコマンドからアクセスしてもDBの操作ができなかった。
アクセスできるが、SELECT文を発行するときにそんなのないと言われる

パーミッション関係

http://lolipoking.lolipop.jp/cgi/patio.cgi?mode=past&no=4648

かなりパーミッションにシビア。

phpを使ってのアクセスはユーザがApacheになるようなので、
SQLiteコマンドで作ったDBの場合ファイルを757とかにしないといけない。
またそのディレクトリも757にしたほうが良かった

rootでDBを作った場合

テスト環境の時にrootでDBを作るとDBのパーミッションを777にしてもphpでアクセスできなかった。

ディレクトリのパーミッションを変えてなかったのでそれが問題かも

データベース更新(update)

パーミッションの関係でpdoからのデータ更新ができなかった。
そこで
http://www.goto.info.waseda.ac.jp/~wei/work/cpu_cost_performance/

を作るときにデータの更新は

	kakaku.comからデータを取得しUPDATE文を含んだシェルスクリプトファイルを生成するxxx.phpファイルを作る
	↓
	それをwgetでアクセスするとyyy.shができる
	↓
	yyy.shを実行するとデータをアップデートする。
	↓
	xxx.shとyyy.shをcorntabに登録する

として何とか回り道してできた。

シェルスクリプトは
http://lab.lolipop.jp/wordpress/?p=35

を参考に

	#!/bin/sh -
	SQLITEDB='xxxx.db'
	
	#select table
	#Sun, 30 Dec 2007 05:42:26 JST
	updatetable(){
	sqlite3 $SQLITEDB <<SQL
	UPDATE  table SET aaa = 29999 WHERE bbb = 5100011282;
	UPDATE  table SET aaa = 20000 WHERE bbb = 5100011284;
	UPDATE  table SET aaa = 37980 WHERE bbb = 5100011068;
	UPDATE  table SET aaa = 26970 WHERE bbb = 5100011070;
	UPDATE  table SET aaa = 19380 WHERE bbb = 5100011286;
	UPDATE  table SET aaa = 23470 WHERE bbb = 5100011237;
	UPDATE  table SET aaa = 21880 WHERE bbb = 5100011072;
	UPDATE  table SET aaa = 19800 WHERE bbb = 5100011239;
	UPDATE  table SET aaa = 21380 WHERE bbb = 5100011074;
	UPDATE  table SET aaa = 16770 WHERE bbb = 5100011360;
	UPDATE  table SET aaa = 14140 WHERE bbb = 5100011290;
	UPDATE  table SET aaa = 14999 WHERE bbb = 5100011241;
	UPDATE  table SET aaa = 15880 WHERE bbb = 5100011192;
	SQL
	}
	updatetable

のように作った。
これをPHPで生成する。

参考リンク

時間が経ってしまったので、まとめられなかったけど参考リンクと残しておきます。

http://codezine.jp/a/article.aspx?aid=433

http://arnote.sblo.jp/archives/200606-1.html

http://d.hatena.ne.jp/MasaGon/20071116/1195240180

http://download.fedora.redhat.com/pub/fedora/linux/core/updates/6/SRPMS/php-5.1.6-3.7.fc6.src.rpm


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-01-28 (月) 00:56:43 (4107d)