在Ubuntu上没有在PHP5中加载Spatialite

时间:2015-12-08 09:50:20

标签: apache sqlite php-5.5 spatialite

我试图在Ubuntu(14.94.2 LTS)上安装Spatialite(4.3.0a).....我想在PHP(5.5.9-1)中使用它... ..

关注这篇文章

https://faimsproject.atlassian.net/wiki/display/FAIMS/Installing+Spatialite+4+on+Ubuntu

(显然使用所涉及的软件包的更新版本......),我现在已安装:

  • PHP 5.5.9-1
  • SQLite 3.9.2
  • Proj4 4.9.2
  • Geos 3.5.0
  • Freexl 1.0.2
  • Spatialite 4.3.0a

我还导出了/ usr / local / lib

export "LD_LIBRARY_PATH=/usr/local/lib"

似乎SQLITE 3和Spatialite工作正常......

sqlite3 myDB
SQLite version 3.9.2 2015-11-02 18:31:45
Enter ".help" for usage hints.
sqlite> SELECT load_extension('mod_spatialite');

sqlite> SELECT sqlite_version();
3.9.2
sqlite> SELECT spatialite_version();
4.3.0a
sqlite> SELECT proj4_version();
Rel. 4.9.2, 08 September 2015
sqlite> SELECT geos_version();
3.5.0-CAPI-1.9.0 r4084
sqlite> .quit

但是如果我尝试执行这个简单的PHP文件

<html>
  <head>
    <title>Testing SpatiaLite on PHP</title>
  </head>
  <body>
    <h1>testing SpatiaLite on PHP</h1>

<?php
# connecting some SQLite DB
# we'll actually use an IN-MEMORY DB
# so to avoid any further complexity;
# an IN-MEMORY DB simply is a temp-DB 
$db = new SQLite3(':memory:');

# loading SpatiaLite as an extension
$db->loadExtension('/usr/local/lib/mod_spatialite.so');


# enabling Spatial Metadata
# using v.2.4.0 this automatically initializes SPATIAL_REF_SYS
# and GEOMETRY_COLUMNS
$db->exec("SELECT InitSpatialMetadata()");

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

?>

  </body>
</html>

......结果是

testing SpatiaLite on PHP

SQLite version: 3.9.2

因此加载Spatialite似乎出现了问题。

我的php.ini配置如下

[sqlite]
 http://php.net/sqlite.assoc-case
sqlite.assoc_case = 0

[sqlite3]
sqlite3.extension_dir = /var/www/html/test/sqlite3_ext

在/ var / www / html / test / sqlite3_ext中有

-rwxr-xr-x 1 cesare cesare 15527574 Dec  1 22:17 libspatialite.so
-rwxr-xr-x 1 cesare cesare 15944537 Dec  2 22:28 mod_spatialite.so

任何建议都表示赞赏......

非常感谢你!

切萨雷

1 个答案:

答案 0 :(得分:0)

我已经解决了

$db->loadExtension('mod_spatialite.so');

在我的PHP代码中以及以这种方式配置LD_LIBRARY_PATH env变量

export "LD_LIBRARY_PATH=/usr/local/lib"