PHP で SQLite を使う
◆ php-sqlite3
◆ cifs マウントしてるところに db 置くなら nolock オプション
◆ cifs マウントしてるところに db 置くなら nolock オプション
PHP はいつの頃からか SQLite がデフォルトで含まれてるから簡単に使えるとか聞いたのにいざつかってみたら 意外と苦労しました
PHP Fatal error: Class ' SQLite3' not found
SQLite3::exec(): database is locked
とかエラーでました
中身は php-pdo なので
はまったのは 「きっと php-sqlite3 みたいな名前のパッケージ入れればいけるだろう」と思って
php-sqlite3 というのは自身がパッケージではなくて php-pdo を指しているグループ名かエイリアスかそういう特殊なものみたいで search では引っかからないようです
そのせいで php-sqlite3 というのはないんだ と思っていろいろ調べていてみつからなく苦戦してました
Windows なら ini ファイルのコメントアウトをはずすだけだったはず
ググってもあまり情報がなかったのですが 英語のフォーラムで見つけた情報では CIFS マウントしてるときに起こるようです
マウントオプションのこういうところに
-fstype=cifs,iocharset=utf8,file_mode=0777,dir_mode=0777
nolock オプションを追加すると使えるようになりました
PHP Fatal error: Class ' SQLite3' not found
SQLite3::exec(): database is locked
とかエラーでました
Class 'SQLite3' not found
クラスがないエラーは Linux (fedora) ならdnf install php-sqlite3
で インストールします中身は php-pdo なので
dnf install php-pdo
でも良いですはまったのは 「きっと php-sqlite3 みたいな名前のパッケージ入れればいけるだろう」と思って
dnf search php-sqlite3
とかdnf search php
で探したのに出なかったところですphp-sqlite3 というのは自身がパッケージではなくて php-pdo を指しているグループ名かエイリアスかそういう特殊なものみたいで search では引っかからないようです
そのせいで php-sqlite3 というのはないんだ と思っていろいろ調べていてみつからなく苦戦してました
Windows なら ini ファイルのコメントアウトをはずすだけだったはず
database is locked
SQLite3 クラスが使えるようになったので使ってみるとさっそくエラーが出ましたググってもあまり情報がなかったのですが 英語のフォーラムで見つけた情報では CIFS マウントしてるときに起こるようです
マウントオプションのこういうところに
-fstype=cifs,iocharset=utf8,file_mode=0777,dir_mode=0777
nolock オプションを追加すると使えるようになりました