每当我使用loadextension或选择加载扩展时它会给出内部服务器错误(sqlite3,spatialite,PHP窗口)

时间:2012-03-11 06:33:57

标签: php windows sqlite gis spatialite

请帮忙。我也给出了下面的代码。试了这么多东西。不工作。

选择了一个空间数据库:

     $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 个答案:

答案 0 :(得分:1)

最常见的问题之一是使用libspatialite版本,它是一个“合并”版本,包括sqlite。如果包含的sqlite版本与您用于加载libspatialite的版本不匹配,那么这是有问题的(特别是在64位窗口上)。两个版本具有不同的ABI =崩溃。

我没有一个很好的解决方案,但你可以采取一些措施来避免这种情况: 1.不要使用合并版本 2.确保两个版本的sqlite是相同的。