• 締切済み

SQLiteのdll名を変更して使用する方法

PHP + SQLite でWebアプリケーションを作成していますが、 SQLiteの機能で若干不足していると感じた部分があり、 ソースコードを入手して自分でカスタマイズしました。 とりあえずWindowsで作業しています。 C言語のソースをコンパイルしてライブラリを作成し、 オリジナルのSQLiteと区別するための「mySqlite.dll」という名前にしたのですが、 これをPHPから呼び出すにはどのような設定を行えばいいのでしょうか? オリジナルのSQLiteならばPDOを使用して呼び出せるのですが、 自分で名前を付けた「mySqlite.dll」の呼び出し方がわかりません。 とりあえずPathは通したものの、「mySqlite.dll」という名前を 指定するための設定が無いように思います。 ご存知の方ご教示ください。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

回答No.2

>オリジナルのSQLiteと『区別する』ためにわざわざ名前を変えています 関数名やクラス名すべて変更してあるんだよね? >オリジナルのSQLiteと『区別する』ためにわざわざ名前を変えています。 これ単純にモジュールのdllの名前変えているだけじゃん。

rubysworld
質問者

補足

変更したのは機能が不足していると感じた部分だけです。そのため、関数名はオリジナルのSQLiteと同じままで、内部処理だけ手を加えています。 質問としては、PHP側でdllを指定してextensionの処理を呼び出せないかということなのですが、 >関数名やクラス名すべて変更してあるんだよね? という話になるということは、dllの指定は出来ないので、mySqlite側で定義している関数名を全て、オリジナルと重複しないような名前に書き換えないと使用できないという理解で良いですか? 確実にそれしか出来ないのであれば諦めますが。 引き続き、dllを指定して呼び出す方法をご存知の方がいらっしゃったらご教示お願いします。

回答No.1

普通にphp.iniにdllの記述箇所あるぞ。 それとapacheのモジュールとしてsqliteのdllとPDOドライバとしてのsqliteのdllファイルは別物だぞ。 というか自分でカスタマイズしてコンパイルするだけの技量があるのに設定ファイルをいじるための基礎の基礎が欠落しているのは何故?

rubysworld
質問者

補足

「普通に」や「基礎の基礎」という言葉から察するに、php.iniでextensionの設定をすることを指していると思いますが、例えばphp.iniに extension=php_pdo_sqlite.dll extension=php_pdo_mySqlite.dll という記述を行った場合、呼び出し側のPHPはこの2つのdllを区別できるのでしょうか? ※質問文にも書いてありますが、オリジナルのSQLiteと『区別する』ためにわざわざ名前を変えています。オリジナルのSQLiteを上書きしたいわけではないのです。

関連するQ&A

  • 泣きそうです>< PHPでSQLite3が使えない

    こんばんは 何をどうやっても進まないのでここで質問させてください。 Windows 8にwamp (Apache 2.2.22, PHP 5.4.3) を入れています。 SQLite3を使いたいのですが、sqlite_open 関数に対して「undefined function」というエラーが出てしまいます。 php.ini の内容は次のようになっています。 ;ここから extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" (中略) extension=php_pdo_sqlite.dll ;extension=php_sqlite.dll extension=php_sqlite3.dll (中略) [sqlite] ; http://php.net/sqlite.assoc-case ;sqlite.assoc_case = 0 [sqlite3] sqlite3.extension_dir = "c:/wamp/bin/php/php5.4.3/ext/" ;ここまで 実際、エクステンションディレクトリには php_pdo_sqlite.dll php_sqlite.dll php_sqlite3.dll があります。 phpinfo(); では PDO drivers:mysql, sqlite SQLite Library:3.7.7.1 [sqlite3] SQLite3 support:enabled SQLite3 module version:0.7 SQLite Library:3.7.7.1 sqlite3.extension_dir:c:/wamp/bin/php/php5.4.3/ext/ いったい何が行けないのでしょうか、iniの値を変えるとphpinfo()も変わるので誤った設定ファイルをいじっているのではないと思います。 バージョンなどは冒頭に記載しています。 よろしくお願いします。

  • PHP5.3.0のSQlite関数に必要なDLL

    以前PHP5.0.4で動作していたSQLiteを利用したプログラムが Apacheでエラーが返ってきます。 現在の環境:PHP5.3.0 Apache2.2 php.iniに以下のようにつけくわえてもだめでした。 extension=php_pdo.dll extension=php_sqlite.dll 両方、5.3.0のextディレクトリにはなかったので、どっかから ダウンしましたが、このdllがいけないのか、php.iniの extensionが間違っているのかわからないという状態です。 ちなみにphp_pdo_sqlite.dllというファイルは、5.3.0のextフォルダに 最初からあったみたいなので、 extension=php_pdo.dll extension=php_pdo_sqlite.dll にしてみたのですが、これでもsqlite_open()関数をコールするところで、undefined function call というエラーがApacheから返ってきます。 いったいどうすればいいのでしょうか。

  • phpからsqlite3にアクセスできない

    windows7-64bit IIS7でphp(5.6.30)+sqlite3で動かしていますが、 php.iniには extension=php_pdo_sqlite.dll extension=php_sqlite3.dll を記述し、 phpinfoには PDO support : PDO drivers PDO Driver for SQLite 3.x : SQLite Library とextに反映されてそうです。 しかしphpからDBにアクセスしようとすると、定義されていませんとエラーになります。 [undefined function sqlite_open()] sqlite_open( sqlite_popen( new SQLite3( のどれもエラーとなります。 どのようにしたら接続できるのでしょうか?

    • ベストアンサー
    • PHP
  • SQLiteの設定

    PHP初心者です。 Apache/2.0.64 (Win32) PHP/5.1.6 上記の環境でphp.iniの設定を編集して、SQLiteを使えるようになりたいです。。 (471行目)extension_dir = "c:\php\ext" ←パスは何度も確認しました。 (607行目)extension=php_pdo.dll (608行目)extension=php_pdo_sqlite.dll (609行目)extension=php_sqlite.dll ↑上記3つのファイルがextフォルダに入っていることも確認しました。 上のようにphp.iniの設定をし直して上書き保存をし、Apacheを再起動させ、phpinfo()で設定確認をしました。 しかしSQLiteの設定項目は一向にあらわれません。。 使用しているPCはwindows vistaです。 何故SQLiteの設定がされていないのか、アドバイス頂きたいです>< (わかりずらい部分があったらすみません。)

    • ベストアンサー
    • PHP
  • xamppでpdoを用いてSQLiteを使う方法

    いつもお世話になります。 xamppの環境でphpからSQLite3のファイルを操作したいと思っています。 xamppのSQLiteはSQLite2が標準でSQLite3を扱うためにはpdoを使う必要がある旨のページを見て php_pdo.dll、php_pdo_sqlite.dllをphp\extフォルダへDLし、php.iniのextension=設定も行いました。 下記のようなスクリプトを書いたのですが、 Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in ・・・ というエラーメッセージが出てどうにも原因がわかりません。 どのようにしたらよいのか教えていただけないでしょうか。 <?php //---PDOでのアクセスStart $dsn = 'sqlite:mondo_quest3.db'; $pdo = new PDO($dsn); $sql="select * from ans order by id"; $entries = $pdo->query($sql); while ($entry = $entries->fetch()) { // 処理を書く } //---PDOでのアクセスEnd ?>

    • ベストアンサー
    • PHP
  • SQLiteの設定について

    ただいま、SQLiteの設定を行っています。 市販本や、さまざまなHPで書いてある通りに設定を行いました。 php.iniのextension=php_sqlite.dll の行頭にある「;」を外し、extension=php_pdo.dllをその上に追記しました。 extension_dir="c:\php\ext" (←¥じゃなく,/の違いでしょうか?) に設定しなおし、apachを再起動させましたがphp.infoにSQLiteの欄が出ず、実行できません。 実行環境は windowsXP apache_2.2.6 php-5.2.5 です。 他にどのような処置がありますでしょうか? すいません。お願いします。

    • 締切済み
    • PHP
  • SQLITEの構築について

    現在、レンタルサーバーでSQLITEを使おうと思い、 <html> <head><title>PHP TEST</title></head> <body> <?php $link = sqlite_open('test.db', 0666, $sqliteerror); if (!$link) { die('接続失敗です。'.$sqliteerror); } print('接続に成功しました。<br>'); // SQLiteに対する処理 sqlite_close($link); print('切断しました。<br>'); ?> </body> </html> と、スクリプトを組んだのですが、ブラウザでアクセスすると Call to undefined function sqlite_open()という、エラーが出てしまいます。これがsqlite_open()関数が定義されていないという意味はわかるのですが、何故このエラーが表示されるのか理解できません。 レンタルサーバーではSQLITEが使えるとかかれており、またphpのバージョンも5.1.6と、SQLITEが標準でバンドルされているはずなんですが、何もしようともcall to undefined ~~  というエラーが出てしまいます。 レンタルサーバー内でこのエラーを出さず、sqliteを使えるようにするにはどうしたらよいでしょうか?ご教授お願いします。 また、余談かもしれませんが、自分なりに、検索し、調べた結果、php.iniというファイルを作成し display_errors = On extension=php_pdo_sqlite.dll extension=php_pdo.dll extension=php_sqlite.dll と、書き込んだファイルをサーバーにあげたのですが、無意味でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • HP上からのPHPによるSQLiteの読み込み

    表題のとおり、PHPでsqliteのDBにアクセスして、表示しようと考えています。 サーバーに以下の内容を書いた、result.phpというファイルを置いて、ページを開きました。 <html> <body> <h3>テスト</h3> <?php try{ $db = new SQLite3('sqlit.db'); $result = sqlite_query($db, "SELECT * FROM table"); $db->close(); } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; } ?> </body> </html> すると、以下のエラーが出ました。 Warning: sqlite_query() expects parameter 1 to be resource, object given in /home/(ファイル置いてある場所)/result.php on line 7 sqlit.dbは適当に作ったファイルで中身はどうでもいいのですが、 エラー内容で検索したところ、一つ目の引数のdb形が違うよーみたいな意味のようですが、解決策がわかりません。 ためしにsqlit.dbを適当な名前にしたところ、その適当な名前のファイルの名前は出てきましたが、 エラー内容は同じでした。 つまり、new SQLite3は実行できている=PHPでSQLのファイルの作成、読み込みは出来ている。 しかし、テーブル名が違うとかといった内容ではなく、型が違う、といわれ困っています。 同じ階層に置いた「php.ini」に以下の3行を記載し、配置してあります。 extension=php_pdo_sqlite.dll extension=php_sqlite.dll extension=php_pdo.dll しばらく調べたのですが、phpそのものが実行されないとか、dbファイルがないといった状況なら調べられそうではあるのですが、実行は出来たけど読み込もうとするとエラーになる。 といわれ調べても情報が出てこず困っています。 何かエラーの可能性になる部分や、調べ方がありましたら教えてください。 ちなみにファイルを置いてあるのはさくらインターネットのサーバーでして、 PHPの設定は「PHP 5.3.8 (CGI版) 」にしてあります。

    • 締切済み
    • PHP
  • エラーundefined function sqlite_open()

    エラーundefined function sqlite_open() いつもお世話になっております。 SQLiteの勉強をしようと思い、ローカルでも動くようにするための設定を 試行錯誤しておりますがうまくいきません。 色々な参考ページを見ているのですが、どの情報が自分の場合、 適切なのか判断できずに困っております。どうかご指導をお願いいたします。 状況としては・・・ ・ OSはWindows XP Professionalです。 ・ ローカルで通常のPHPはAN HTTPD ver.1.42pを使用して動かしています。 ・ ローカルでphpinfo()を実行すると、「Version 5.2.8」と出ます。 extension_dirの項は Local Value、Master Valueともに「./」です。 関係ないかもしれませんが、SystemRootの項は「C:\WINDOWS」と表示されています。 ただし、phpinfo()にはsqliteの文字は検索しても見当たりません。 ・ C:\WINDOWSの中にあるphp.iniを開き、下記の3つをコメントアウト(先頭の;を削除)しました。 extension=php_pdo.dll (630行目付近) extension=php_pdo_sqlite.dll (640行目付近) extension=php_sqlite.dll (650行目付近) これらのdllファイルは全てC:\php\ext の中に入っています。 ・ http://jp2.php.net/manual/ja/sqlite.installation.php も何度も読みましたが、お恥ずかしながら内容をきちんと理解できずにおります。 ・ http://www.sqlite.org/download.htmlから、「Precompiled Binaries For Windows」 の一番上のファイル「sqlite-3_6_23_1.zip」をDLし、中の「sqlite3.exe」解凍し、 C:\SQLiteを作ってその中に入れました。 以上のような状況です。誠に恐れ入りますが、 アドバイスをどうぞよろしくお願いいたします。m(_ _)m

    • ベストアンサー
    • PHP
  • PHP5からSQLite3の接続

    いつもお世話になります。 現在PHPを勉強しているのですが、 PHP5からSQLite3へ接続するさいに以下のメッセージが表示されます。 Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in [PHPのファイルパス].php on line 32 SQLiteのテストデータベースに接続が上手くいきません 32行目↓ $dbHandle = sqlite_open('C:/pg/Apache/Apache2.2/htdocs/testdb', 0666, $err); [環境] WindowxXP PHP Version 5.3.5 SQLite3 php_pdo.dll が../php/extフォルダーに無いのでphp.iniのコメントは外してません。 ;を外したらアパッチ起動時に「モジュールがない」と言われ起動しません。 初心者で色々調べたのですが・・・ すみませんがどなたかご教示お願い致します。

    • ベストアンサー
    • PHP