всякий раз, когда я использую либо loadextension, либо выбираю расширение загрузки, он выдает внутреннюю ошибку сервера (sqlite3 ,atialite, PHP windows) - PullRequest
0 голосов
/ 11 марта 2012

Пожалуйста, помогите. Я также дал код ниже. Перепробовал так много вещей. Не работает.

выбрана пространственная база данных:

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

пробовал эти расширения нагрузки:

// $db->loadExtension('C:\PHP\ext\libspatialite-2.dll');
//   $db->loadExtension('libspatialite-4.dll');
//   $db->exec("SELECT InitSpatialMetadata()");

также пробовал эту функцию в случае, если загрузка расширения отключена:

// $db->exec("sqlite3_enable_load_extension(1)");
//   $tvalue=$db->loadExtension('C:\\PHP\\sqliteext\\libspatialite-4.dll');

попробовал загрузить расширение здесь:

    $db->exec("SELECT load_extension('C:\\PHP\\sqliteext\\libspatialite-4.dll')");
    phpinfo();
    $result = $db->query("SELECT load_extension('libspatialite-4.dll')");


    var_dump($result->fetchArray());

пробовал этот запрос:

    $result = $db->query('select astext(geometry) from roads');
    var_dump($result->fetchArray());

    $rs = $db->query('SELECT spatialite_version()');

1 Ответ

1 голос
/ 30 июня 2012

Одной из наиболее распространенных проблем является использование версии libspatialite, которая представляет собой сборку "объединения", которая включает sqlite.Это проблематично (особенно в 64-битных окнах), если включенная версия sqlite не совпадает с версией, которую вы используете для загрузки libspatialite.Две версии с различным ABI = сбой.

У меня нет хорошего решения, но есть вещи, которые вы можете сделать, чтобы попытаться избежать этого: 1. не используйте сборку объединения 2. убедитесь,две версии sqlite одинаковы.

...