QA@IT
«回答へ戻る

5639
+> PHP5.4.10を使いながら、SQLite (2.0-dev)を使う方法はないでしょうか?
+
 peclから試して出たエラー調べてて気付きましたが無理そうですね。
 結論から言えば以下が Won't Fix となっています。
 
 ```
 
 上記の BYREF_NONE 未定義エラー調べて、won't fix にあたりました。
-

PHP5.4.10を使いながら、SQLite (2.0-dev)を使う方法はないでしょうか?

peclから試して出たエラー調べてて気付きましたが無理そうですね。
結論から言えば以下が Won't Fix となっています。

Bug #64686 PECL SQLite2 support for PHP 5.4
https://bugs.php.net/bug.php?id=64686

 [2013-04-26 18:06 UTC] sixd@php.net
-Status: Open
+Status: Wont fix
 [2013-04-26 18:06 UTC] sixd@php.net
SQLite 2 support was removed from PHP 5.4.  Refer to the UPGRADING file:

   - ext/sqlite is no longer part of the base distribution and has been moved
     to PECL. Use sqlite3 or PDO_SQLITE instead.

どう対応するかは規模次第でしょうね。

どうしてもsqlite2を使いたいなら phpのバージョン下げて使うしかなさそうです。
sqlite3でラッパーを自作するにも sqlite_num_rows が曲者かもしれません。
下手に迂回させるよりエラーでつまづかせながら直していく方が早くて正確な場合も。

なお、sqlite2とsqlite3はDBファイルに互換性がないので変換が必要です。
変換は簡単ですが、変換後は念のため中身確認した方がいいですよ。
(昔 .dumpのやり方が悪かったのか varcharの頭ゼロとれたことが・・・。その時はデータ少なかったので修正処理作っちゃいました。)


以下は試したこと

MAMP_componentsの php5.4.4 を使って、
(includeに配置して ./configure とかしてますが割愛

$ /Applications/MAMP/bin/php/php5.4.4/bin/pecl install sqlite
-略-
running: phpize
Cannot find config.m4.
-略-
ERROR: `phpize' failed

-> 失敗

http://pecl.php.net/package/SQLite
からSQLiteソース(1.0.3)を取得して、
autoconfもインストールして

$ /Applications/MAMP/bin/php/php5.4.4/bin/phpize
$ ./configure 
$ make 
$ sudo make install

エラー

-略-
/Applications/MAMP/bin/php/php5.4.4/include/php/ext/sqlite/sqlite.c:56:45: error:
      use of undeclared identifier 'BYREF_NONE'
static unsigned char arg3_force_ref[] = {3, BYREF_NONE, ...
-略-
10 warnings and 6 errors generated.
make: *** [sqlite.lo] Error 1

上記の BYREF_NONE 未定義エラー調べて、won't fix にあたりました。

> PHP5.4.10を使いながら、SQLite (2.0-dev)を使う方法はないでしょうか?

peclから試して出たエラー調べてて気付きましたが無理そうですね。
結論から言えば以下が Won't Fix となっています。

**Bug #64686	PECL SQLite2 support for PHP 5.4**
https://bugs.php.net/bug.php?id=64686

```
 [2013-04-26 18:06 UTC] sixd@php.net
-Status: Open
+Status: Wont fix
 [2013-04-26 18:06 UTC] sixd@php.net
SQLite 2 support was removed from PHP 5.4.  Refer to the UPGRADING file:

   - ext/sqlite is no longer part of the base distribution and has been moved
     to PECL. Use sqlite3 or PDO_SQLITE instead.
```

どう対応するかは規模次第でしょうね。

どうしてもsqlite2を使いたいなら phpのバージョン下げて使うしかなさそうです。
sqlite3でラッパーを自作するにも sqlite_num_rows が曲者かもしれません。
下手に迂回させるよりエラーでつまづかせながら直していく方が早くて正確な場合も。

なお、sqlite2とsqlite3はDBファイルに互換性がないので変換が必要です。
変換は簡単ですが、変換後は念のため中身確認した方がいいですよ。
(昔 .dumpのやり方が悪かったのか varcharの頭ゼロとれたことが・・・。その時はデータ少なかったので修正処理作っちゃいました。)


---
以下は試したこと

MAMP_componentsの php5.4.4 を使って、
(includeに配置して ./configure とかしてますが割愛

```
$ /Applications/MAMP/bin/php/php5.4.4/bin/pecl install sqlite
-略-
running: phpize
Cannot find config.m4.
-略-
ERROR: `phpize' failed
```
-> 失敗

http://pecl.php.net/package/SQLite
からSQLiteソース(1.0.3)を取得して、
autoconfもインストールして
```
$ /Applications/MAMP/bin/php/php5.4.4/bin/phpize
$ ./configure 
$ make 
$ sudo make install
```

エラー
```
-略-
/Applications/MAMP/bin/php/php5.4.4/include/php/ext/sqlite/sqlite.c:56:45: error:
      use of undeclared identifier 'BYREF_NONE'
static unsigned char arg3_force_ref[] = {3, BYREF_NONE, ...
-略-
10 warnings and 6 errors generated.
make: *** [sqlite.lo] Error 1
```

上記の BYREF_NONE 未定義エラー調べて、won't fix にあたりました。

回答を投稿

peclから試して出たエラー調べてて気付きましたが無理そうですね。
結論から言えば以下が Won't Fix となっています。

Bug #64686 PECL SQLite2 support for PHP 5.4
https://bugs.php.net/bug.php?id=64686

 [2013-04-26 18:06 UTC] sixd@php.net
-Status: Open
+Status: Wont fix
 [2013-04-26 18:06 UTC] sixd@php.net
SQLite 2 support was removed from PHP 5.4.  Refer to the UPGRADING file:

   - ext/sqlite is no longer part of the base distribution and has been moved
     to PECL. Use sqlite3 or PDO_SQLITE instead.

どう対応するかは規模次第でしょうね。

どうしてもsqlite2を使いたいなら phpのバージョン下げて使うしかなさそうです。
sqlite3でラッパーを自作するにも sqlite_num_rows が曲者かもしれません。
下手に迂回させるよりエラーでつまづかせながら直していく方が早くて正確な場合も。

なお、sqlite2とsqlite3はDBファイルに互換性がないので変換が必要です。
変換は簡単ですが、変換後は念のため中身確認した方がいいですよ。
(昔 .dumpのやり方が悪かったのか varcharの頭ゼロとれたことが・・・。その時はデータ少なかったので修正処理作っちゃいました。)


以下は試したこと

MAMP_componentsの php5.4.4 を使って、
(includeに配置して ./configure とかしてますが割愛

$ /Applications/MAMP/bin/php/php5.4.4/bin/pecl install sqlite
-略-
running: phpize
Cannot find config.m4.
-略-
ERROR: `phpize' failed

-> 失敗

http://pecl.php.net/package/SQLite
からSQLiteソース(1.0.3)を取得して、
autoconfもインストールして

$ /Applications/MAMP/bin/php/php5.4.4/bin/phpize
$ ./configure 
$ make 
$ sudo make install

エラー

-略-
/Applications/MAMP/bin/php/php5.4.4/include/php/ext/sqlite/sqlite.c:56:45: error:
      use of undeclared identifier 'BYREF_NONE'
static unsigned char arg3_force_ref[] = {3, BYREF_NONE, ...
-略-
10 warnings and 6 errors generated.
make: *** [sqlite.lo] Error 1

上記の BYREF_NONE 未定義エラー調べて、won't fix にあたりました。

peclから試して出たエラー調べてて気付きましたが無理そうですね。
結論から言えば以下が Won't Fix となっています。

**Bug #64686	PECL SQLite2 support for PHP 5.4**
https://bugs.php.net/bug.php?id=64686

```
 [2013-04-26 18:06 UTC] sixd@php.net
-Status: Open
+Status: Wont fix
 [2013-04-26 18:06 UTC] sixd@php.net
SQLite 2 support was removed from PHP 5.4.  Refer to the UPGRADING file:

   - ext/sqlite is no longer part of the base distribution and has been moved
     to PECL. Use sqlite3 or PDO_SQLITE instead.
```

どう対応するかは規模次第でしょうね。

どうしてもsqlite2を使いたいなら phpのバージョン下げて使うしかなさそうです。
sqlite3でラッパーを自作するにも sqlite_num_rows が曲者かもしれません。
下手に迂回させるよりエラーでつまづかせながら直していく方が早くて正確な場合も。

なお、sqlite2とsqlite3はDBファイルに互換性がないので変換が必要です。
変換は簡単ですが、変換後は念のため中身確認した方がいいですよ。
(昔 .dumpのやり方が悪かったのか varcharの頭ゼロとれたことが・・・。その時はデータ少なかったので修正処理作っちゃいました。)


---
以下は試したこと

MAMP_componentsの php5.4.4 を使って、
(includeに配置して ./configure とかしてますが割愛

```
$ /Applications/MAMP/bin/php/php5.4.4/bin/pecl install sqlite
-略-
running: phpize
Cannot find config.m4.
-略-
ERROR: `phpize' failed
```
-> 失敗

http://pecl.php.net/package/SQLite
からSQLiteソース(1.0.3)を取得して、
autoconfもインストールして
```
$ /Applications/MAMP/bin/php/php5.4.4/bin/phpize
$ ./configure 
$ make 
$ sudo make install
```

エラー
```
-略-
/Applications/MAMP/bin/php/php5.4.4/include/php/ext/sqlite/sqlite.c:56:45: error:
      use of undeclared identifier 'BYREF_NONE'
static unsigned char arg3_force_ref[] = {3, BYREF_NONE, ...
-略-
10 warnings and 6 errors generated.
make: *** [sqlite.lo] Error 1
```

上記の BYREF_NONE 未定義エラー調べて、won't fix にあたりました。