【问题标题】:whenever i use either loadextension or select load extension it gives Internal server error(sqlite3,spatialite,PHP windows)每当我使用加载扩展或选择加载扩展时,它都会出现内部服务器错误(sqlite3、spatialite、PHP windows)
【发布时间】:2012-03-11 06:33:56
【问题描述】:

请帮忙。我还给出了下面的代码。尝试了很多东西。不工作。

选择了一个空间数据库:

     $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()');

【问题讨论】:

  • 什么失败了?有任何错误信息吗?

标签: php windows sqlite gis spatialite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多