1 votos

Spatialite: 'no such function: GeomFromText' error

Tengo este código PHP en mi máquina virtual Ubuntu 15.10

<?php    
  $lon = 4.221542;
  $lat = 32.21115;

  $db_data_sessions = new SQLite3('./DataBase/MyDB.sqlite');

  # Loading SpatiaLite as an extension ...
  $db_data_sessions->loadExtension('mod_spatialite.so');

  $q="SELECT comune FROM comuni32632 WHERE 
      WITHIN(Transform(GeomFromText('POINT(".$lon." 
      ".$lat.")',4326),32632),comuni32632.Geometry)";

      echo "Query = " .$q;
      echo "\n\n";

      try {
        $stmt = $db_data_sessions->prepare($q);
        $results = $stmt->execute();

        if ($results->fetchColumn() > 0)
         {
           echo "OK";
           echo "\n\n";

           $theName = '';
           while($row=$results->fetchArray(SQLITE3_ASSOC))
             {
              $theName = $row['comune'];
             }
           //return $theName;
           echo "Result = " .$theName;
           echo "\n\n"; 
         }
         else {
            //return "NO DATA";
            echo "Result = NO DATA";
            echo "\n\n";
         }
     }
     catch(PDOException $e) {
        print "Something went wrong or Connection to database failed! ".$e->getMessage();
        //return "ERROR";
        echo "Result = ERROR";
        echo "\n\n";   
   }
   $db_data_sessions = null;    
?>

y cuando trato de ejecutar sólo puedo ver la primera salida de eco, por lo que mi texto de consulta actual y no más. En la consola del navegador puedo ver "Error 500"

Cuando intento ejecutar desde la línea de comandos

php test.php

el resultado es

PHP Warning:  SQLite3::loadExtension(): SQLite Extension are disabled in /var/www/html/test.php on line 10
Query = SELECT comune FROM comuni32632 WHERE WITHIN(Transform(GeomFromText('POINT(4.221542 32.21115)',4326),32632),comuni32632.Geometry)

PHP Warning:  SQLite3::prepare(): Unable to prepare statement: 1, no such function: GeomFromText in /var/www/html/test.php on line 19
PHP Fatal error:  Call to a member function execute() on boolean in /var/www/html/test.php on line 20

Tenga en cuenta que si intento ejecutar la consulta en Sqlite3 cargando la extensión Spatialite todo funciona bien

Tenga en cuenta que si intento ejecutar el código de prueba PHP disponible aquí http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/php.html todo funciona bien así que creo que PHP y Spatialite están trabajando bien juntos

¿Qué está fallando en mi código?

0voto

Heinzi Puntos 456

He resuelto cambiar mi código de esta manera ....

<?php

  $lon = 11.611378;
  $lat = 45.730675;

  $db_data_sessions = new SQLite3('./DataBase/OpenProntoSoccorso.sqlite');

  # Loading SpatiaLite as an extension ...
  $db_data_sessions->loadExtension('mod_spatialite.so');

  $q="SELECT comune FROM comuni32632 WHERE WITHIN(Transform(GeomFromText('POINT(".$lon." ".$lat.")',4326),32632),comuni32632.Geometry)";

  echo "Query = " .$q;
  echo "\n\n";

  try {
     $stmt = $db_data_sessions->prepare($q);
     $results = $stmt->execute();

     $count = 0;
     while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
       $data .= $row['comune'];
       $count = $count + 1;
     }
     echo "Result = OK - Comune = ".$data." Count = ".$count;
     echo "\n\n";
  }
  catch(PDOException $e) {
        print "Something went wrong or Connection to database failed! ".$e->getMessage();
        //return "ERROR";
        echo "Result = ERROR";
        echo "\n\n";

  }
  $db_data_sessions = null;

?>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X