LoginSignup
2

More than 5 years have passed since last update.

CentOS6.6 環境の PHP 5.3.x に SQlite1.0.3 を入れたいときのメモ

Last updated at Posted at 2015-06-03

経緯

ちょっとしたphpのプログラムを作ることを任されましたw。会員管理とかほんとにもうbasic認証ぐらいな感じの簡単なやつを。まあそんだったら php + SQlite 組み入れてと思ってたら本番先はレンタルサーバー…。まあそんな感じで凹んでいましたが、運よく SQLiteが入っているのでラッキーと思っていたら SQlite1.0.3 。
ちょっとーそんな古い環境、、ローカルに環境作れるの?と、また「はまった」のでそのメモ。

ちなみに散々探して(前にメモしていたのを無くした)下記のサイトとおりに行ったらいまくいったのです(笑)。

PHP5.3にSQlite1.0.3を入れる

手順

php とかも入れますぜw

# yum install httpd-devel php php-mbstring php-pear php-devel php-pdo wget
# wget http://museum.php.net/php5/php-5.3.4.tar.gz
# tar xvfz php-5.3.4.tar.gz
# cd php-5.3.4/ext/sqlite
# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
config.m4:50: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2743: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:50: the top level
config.m4:50: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2743: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:50: the top level
# ./configure
# make clean;make
# make install
# sudo echo 'extension=sqlite.so' > /etc/php.d/sqlite.ini
# sudo echo '<?php phpinfo();' > /var/www/html/phpinfo.php

Apache を再起動して、SQLite が実行可能かを確認する。

sqlite3_php.png

よしよし。

SQLite 関数 直接操作

さんのサイトの、コードそのままですが(多少変更)。
適当なディレクトリに設置して。実行します。

<?php    
$sqliteerror = null;

/* SQLiteハンドルの取得 */
$dbh = sqlite_open('test.db', '0666', $sqliteerror) 
   or die ("file not create.");

/* テーブルの作成 */
/* idをプライマリ宣言し自動シーケンス */
$query = <<<QUERY
DROP TABLE account_tbl;
);
QUERY;
$result = sqlite_query($query, $dbh);

$query = <<<QUERY
CREATE TABLE account_tbl (
    id INTEGER,
    number INTEGER,
    name VARCHAR(64) NOT NULL,
    email VARCHAR(128),
    PRIMARY KEY (id)
);
QUERY;
$result = sqlite_query($query, $dbh)
   or die ("table not create.");

/* ステートメントの生成 */
$query = "INSERT INTO account_tbl (number,name,email) VALUES ".
                "('30248','takahasi','takahasi@hoge.com') ";
$result = sqlite_query($query, $dbh);

$query = "INSERT INTO account_tbl (number,name,email) VALUES ".
                "('45567','ito','ito@hoge.com') ";
$result = sqlite_query($query, $dbh);


/* データの取得 */
$result = sqlite_query('SELECT * FROM account_tbl', $dbh);

$cols = array();
while ($cols = sqlite_fetch_array($result, SQLITE_ASSOC)) { 
    echo "----------------------<br>";
    echo "id    = {$cols['id']}" . "<br>";
    echo "number= {$cols['number']}" . "<br>";
    echo "name  = {$cols['name']}" . "<br>";
    echo "email = {$cols['email']}" . "<br>";
    echo "----------------------<br>";
} 

/* ステートメントの開放 */
$result = null;
?>

結果として

----------------------
id = 1
number= 30248
name = takahasi
email = takahasi@hoge.com
----------------------
----------------------
id = 2
number= 45567
name = ito
email = ito@hoge.com
----------------------

と画面に表示されれば、ok

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2