0

Windows 7 を使用しています。WAMPServer をインストールしました。現在、spatialite ライブラリを読み込めません。警告を表示しています..

警告: SQLite3::loadExtension() [sqlite3.loadextension]: マルチスレッド Web サーバーではサポートされていません

これが私の全体的な構成手順です。私が行ったことは...

このリンクから、spatialite lib を取得しました。「libspatialite-1.dll」をコピーして、php 拡張 dll を含む「D:\wamp\bin\php\php5.3.8\ext」に貼り付けます。

http://www.gaia-gis.it/spatialite-2.3.1/libspatialite-win-x86-2.3.1.zip

次に、php.ini ファイルを編集しました。以下の構成を変更しました。

.
sqlite3.extension_dir = C:\libspatialite-win-x86-2.3.1\bin
.
extension=libspatialite-1.dll
.
enable_dl = On

そして最後に、ダウンロードした libspatialite-win-x86-2.3.1 からすべてのライブラリをコピーして、php コードのプロジェクト フォルダー (libspatialite.a、libspatialite.dll.a、libspatialite.la) に貼り付けます。スクリプトを次のように記述します。続いて...

<?php

$db = new SQLite3('sixcommunes.sqlite'); 

$db->loadExtension('libspatialite.a'); 

$rs = $db->query('SELECT spatialite_version()');
while($row = $rs->fetchArray()){
    print "<h3>SQLite version: $row[0]</h3>";
}

?>

何が間違っていたのか、この問題を解決する方法がわかりませんか?

4

1 に答える 1

0

答えを見たことがないので、自分で答えてください。私はC#でspatialiteを使用しましたが、Spatialite拡張機能を使用する場合、通常のPHP拡張機能のようにlibspatialiteをロードする必要はなく、代わりにこれと同様のことを行う必要があります。(これはc#コードであり、アイデアを提供しようとしているだけです)

SQLiteCommand sqliteCommand = new SQLiteCommand(String.Format("SELECT
load_extension('{0}');", "libspatialite-2.dll"), connection);
sqliteCommand.ExecuteNonQuery();

Spatialiteを使用するには、sqliteでSelect load_extension( "libspatialite-2.dll")を実行する必要があります。お役に立てれば

于 2012-03-26T10:39:01.610 に答える