Nucleus/SQLite
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
Jeans CMS 0.7.0 alphaを公開 [Nucleus/SQLite]
2010年3月2日
Jeans CMS 0.7.0 alphaを公開しました。jeanscms.sourceforge.jpの方に色々と説明を書きましたので、興味ある方はそちらを参照していただけたらと思います。
http://jeanscms.sourceforge.jp/index.php?itemid=25
それに伴い、ここのサイトもいずれJeans CMSに移行します。そうなるとおそらく、Nucleus-SQLiteのサポートはできなくなると思います。もし、Nucleus-SQLiteのメンテナンスをしていただけるとお考えの方がいらっしゃいましたら、お知らせください。引継ぎ(といっても、たいしたことはありませんが)をさせていただきます。
http://jeanscms.sourceforge.jp/index.php?itemid=25
それに伴い、ここのサイトもいずれJeans CMSに移行します。そうなるとおそらく、Nucleus-SQLiteのサポートはできなくなると思います。もし、Nucleus-SQLiteのメンテナンスをしていただけるとお考えの方がいらっしゃいましたら、お知らせください。引継ぎ(といっても、たいしたことはありませんが)をさせていただきます。
SQLiteラッパ ver 0.9.0.3 [Nucleus/SQLite]
2008年2月22日
SQLiteラッパ ver 0.9.0.2 (Nucleus-SQLite 3.31 SP1 に付属)において、MultipleCategoriesなど、REGEXPをクエリー中に用いているプラグインなどで不具合が出るバグを発見しました。
修正版を 0.9.0.3 として、Nucleusフォーラムにアップしました。該当する方は、アップグレードしてください。バグ修正だけなので、前のバージョンのまま使っていても、セキュリティー上の問題はありません。
修正版を 0.9.0.3 として、Nucleusフォーラムにアップしました。該当する方は、アップグレードしてください。バグ修正だけなので、前のバージョンのまま使っていても、セキュリティー上の問題はありません。
PHPにsqlite_free_resultが無い訳 [Nucleus/SQLite]
2008年1月7日
PHP マニュアルより
PHP4のZendエンジンに導入されたリファレンスカウンティングシステムのおかげで、あるリソースがもう参照されなくなった場合に(Javaと全く 同様に)、そのリソースは自動的に削除されます。この場合、このリソー スが作成した全てのリソースはガーベッジコレクタにより開放されます。 このため、free_result関数を用いて手動でメモリを開放する必要が生じるのはまれです。
注意: 持続的データベース接続は特別で、ガーベッジコレクタにより破棄されません。
ガベージコレクタが自動的にやってくれるということらしい。持続的接続の場合にどうするかということだが、そういう場合はfree_resultが必要な処理は行うなということかもしれない。どちらにせよ、私は持続的接続は使わないだろうから、この機能があっても無くてもいいんだけれど。
PHP4のZendエンジンに導入されたリファレンスカウンティングシステムのおかげで、あるリソースがもう参照されなくなった場合に(Javaと全く 同様に)、そのリソースは自動的に削除されます。この場合、このリソー スが作成した全てのリソースはガーベッジコレクタにより開放されます。 このため、free_result関数を用いて手動でメモリを開放する必要が生じるのはまれです。
注意: 持続的データベース接続は特別で、ガーベッジコレクタにより破棄されません。
ガベージコレクタが自動的にやってくれるということらしい。
SQLite Manager で、新規データベースを登録するとき [Nucleus/SQLite]
2007年12月23日
WindowsでSQLite Managerを使うと、ディレクトリ指定に『 \ 』を用いていることに伴って、新規データベースの登録がうまく行かない。そこで、『 \ 』をすべて『 / 』に変更する必要がある。
また、sqlite_open() 関数でできた、長さゼロのデータベースファイルを登録しようとしても、うまく行かない。こうった場合は、一度データベースファイルを削除し、SQLite Manager に空のデータベースファイルを作成させるようにする。
以前同じ問題を解決していたにもかかわらず忘れていたので、ここにメモ。もしかしたら、新しいバージョンのSQLite Managerでは解決されているのかもしれないけれど…。
また、sqlite_open() 関数でできた、長さゼロのデータベースファイルを登録しようとしても、うまく行かない。こうった場合は、一度データベースファイルを削除し、SQLite Manager に空のデータベースファイルを作成させるようにする。
以前同じ問題を解決していたにもかかわらず忘れていたので、ここにメモ。もしかしたら、新しいバージョンのSQLite Managerでは解決されているのかもしれないけれど…。
SQLiteの、便利だけれど危険な機能 [Nucleus/SQLite]
2007年12月21日
PHPヘルプのsqlite_create_function関数の説明文より、
PHP は、データベースが最初にオープンされる際に phpという名前の特別な関数を登録します。 このphp関数は、事前に登録することなしにあらゆるPHP関数をコールする ために使用可能です。
例 2. PHP関数の使用例
この機能、とても便利だけれど、諸刃の剣である。あらゆるPHP関数をコールすることが出来るのは、プログラマーにとって有益だけれど、同時にクラッカーにとっても有益であるということ。すなわち、SQLiteでSQLインジェクションが起きてしまった場合、それは即、PHPのあらゆる関数を呼び出すことが出来るということになる。例えば、file_get_contentsを使えば、サーバー上のファイルの内容を呼び出せるし、file_put_contentsを使えば、任意のファイルをサーバー上に構築したり出来てしまう。
幸いに、sqlite_create_functionを用いてオーバーライドすることが可能なので、この機能を無効化したり、呼び出す関数に制限を加えたりすることは簡単に出来る。例えば、
とすれば、クエリー中でphp関数を用いても、円周率の値を返すだけになる。
次期バージョンのSQLiteラッパーで対応します
PHP は、データベースが最初にオープンされる際に phpという名前の特別な関数を登録します。 このphp関数は、事前に登録することなしにあらゆるPHP関数をコールする ために使用可能です。
例 2. PHP関数の使用例
<?php $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files"); ?>
この機能、とても便利だけれど、諸刃の剣である。あらゆるPHP関数をコールすることが出来るのは、プログラマーにとって有益だけれど、同時にクラッカーにとっても有益であるということ。すなわち、SQLiteでSQLインジェクションが起きてしまった場合、それは即、PHPのあらゆる関数を呼び出すことが出来るということになる。例えば、file_get_contentsを使えば、サーバー上のファイルの内容を呼び出せるし、file_put_contentsを使えば、任意のファイルをサーバー上に構築したり出来てしまう。
幸いに、sqlite_create_functionを用いてオーバーライドすることが可能なので、この機能を無効化したり、呼び出す関数に制限を加えたりすることは簡単に出来る。例えば、
sqlite_create_function($db,'php','pi');
とすれば、クエリー中でphp関数を用いても、円周率の値を返すだけになる。
次期バージョンのSQLiteラッパーで対応します
SQLiteスピードアップ:PRAGMA default_synchronous = OFF [Nucleus/SQLite]
2007年3月27日
SQLite をWindowsで用いていて、データベースが大きくなるとスピードがかなり遅くなる現象に遭遇した。そうなった時に、スピードアップするための方法を見つけたので、メモ。
クエリーとして、
を実行すればよい。Nucleus-SQLiteの場合は、NP_SQLiteの管理画面から実行できる。default_synchronous の設定には3つ、『OFF』『NORMAL』『FULL』とあって、データ書き込みの際のOSとのシンクロを制御しているらしい(デフォルトは『NORMAL』)。『FULL』なら、OSがクラッシュしたようなときでもデータベースが壊れない。その代わり、速度が犠牲になる。『OFF』の場合は、速度は向上するけれど、データのハードディスクへの書き込みの際にOSがクラッシュすると、データベースが壊れる可能性がゼロで無くなる。
Windowsで利用するときに、『OFF』にすると速度の大幅な向上が見られた。こまめにデータベースをバックアップするようにすればこれでも良いだろう。一方、このラクーカンのサーバでは、『OFF』でも『NORMAL』でも速度の差がなかったので、『NORMAL』(デフォルト)にしておいた。
クエリーとして、
PRAGMA default_synchronous = OFF;
を実行すればよい。Nucleus-SQLiteの場合は、NP_SQLiteの管理画面から実行できる。default_synchronous の設定には3つ、『OFF』『NORMAL』『FULL』とあって、データ書き込みの際のOSとのシンクロを制御しているらしい(デフォルトは『NORMAL』)。『FULL』なら、OSがクラッシュしたようなときでもデータベースが壊れない。その代わり、速度が犠牲になる。『OFF』の場合は、速度は向上するけれど、データのハードディスクへの書き込みの際にOSがクラッシュすると、データベースが壊れる可能性がゼロで無くなる。
Windowsで利用するときに、『OFF』にすると速度の大幅な向上が見られた。こまめにデータベースをバックアップするようにすればこれでも良いだろう。一方、このラクーカンのサーバでは、『OFF』でも『NORMAL』でも速度の差がなかったので、『NORMAL』(デフォルト)にしておいた。
SQLite Manager [Nucleus/SQLite]
2006年11月26日
Nucleus-SQLite の管理のため、SQLite Manager を導入した。phpMyAdmin 同様、セキュリティーには要注意である。次の方法で、セキュリティーを確保することにした。
1)インストールするURLを、第三者が知り得ないものにする。
2).htaccess を用いて、アクセスできる IP アドレスを絞込み、自分が使っているコンピュータ以外からのアクセスを出来るだけ阻止する。
3).htaccess を用いて、パスワードの設定を行う。
4)使用している Nucleus に super-admin としてログインしているときのみ SQLite Manager が使用できるようにする。
1)インストールするURLを、第三者が知り得ないものにする。
2).htaccess を用いて、アクセスできる IP アドレスを絞込み、自分が使っているコンピュータ以外からのアクセスを出来るだけ阻止する。
3).htaccess を用いて、パスワードの設定を行う。
4)使用している Nucleus に super-admin としてログインしているときのみ SQLite Manager が使用できるようにする。
Windows に Nucleus-SQLite をインストールする [Nucleus/SQLite]
2006年11月10日
先日、自宅の Windows に Nucleus-SQLite を導入した。サーバ環境の構築から始めたが、Apache, PHP, SQLite のインストールでかなり手間取った。忘れないうちに、メモ。
SQLiteでなくMySQLを利用する場合はXAMPPやphpdevなど、簡単にサーバ構築できるソフトがあるが、SQLiteの場合は一つ一つ構築するのが基本であろう。
SQLiteでなくMySQLを利用する場合はXAMPPやphpdevなど、簡単にサーバ構築できるソフトがあるが、SQLiteの場合は一つ一つ構築するのが基本であろう。
Nucleus/pgSQL [Nucleus/SQLite]
2006年9月25日
PostgreSQL 版の Nucleus 作成にもほぼめどがついた。今のところ、コアの記事およびコメントの表示・書き込みができる。
(ここからダウンロードできます。)
(ノート:英語版で、α版です。PostgreSQL 版では、install.php で新たなデータベースの作成ができないので、PostgreSQL用のツールでISO-5589-1かそれ相当のエンコードのデータベースを別途作成して用いてください。)
(以下、pgSQL版作成ノート)
(ここからダウンロードできます。)
(ノート:英語版で、α版です。PostgreSQL 版では、install.php で新たなデータベースの作成ができないので、PostgreSQL用のツールでISO-5589-1かそれ相当のエンコードのデータベースを別途作成して用いてください。)
(以下、pgSQL版作成ノート)
Nucleus 3.3 β SQLiteのテスト [Nucleus/SQLite]
2006年9月13日
先日、久しぶりに Nucleus のフォーラムに行ってみたら、Nucleus 3.3 β がアップされていた。早速ダウンロードして、SQLite ラッパーを付加してテストしてみた。