]> git.openstreetmap.org Git - nominatim.git/commitdiff
setup: bail out earl when something is wrong with nominatim.so
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 17 Sep 2017 18:07:03 +0000 (20:07 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 17 Sep 2017 18:07:03 +0000 (20:07 +0200)
utils/setup.php

index 1e1ec37b6ae7f2dd87d53502164acf3e548ffa2e..2369b183d48b2da69289821d3ee8abd6b1b08a21 100755 (executable)
@@ -132,11 +132,24 @@ if ($aCMDResult['setup-db'] || $aCMDResult['all']) {
 
     $i = chksql($oDB->getOne("select count(*) from pg_user where usename = '".CONST_Database_Web_User."'"));
     if ($i == 0) {
-        echo "ERROR: Web user '".CONST_Database_Web_User."' does not exist. Create it with:\n";
+        echo "\nERROR: Web user '".CONST_Database_Web_User."' does not exist. Create it with:\n";
         echo "\n          createuser ".CONST_Database_Web_User."\n\n";
         exit(1);
     }
 
+    // Try accessing the C module, so we know early if something is wrong
+    // and can simply error out.
+    $sSQL = "CREATE FUNCTION nominatim_test_import_func(text) RETURNS text AS '";
+    $sSQL .= CONST_InstallPath."/module/nominatim.so', 'transliteration' LANGUAGE c IMMUTABLE STRICT";
+    $sSQL .= ';DROP FUNCTION nominatim_test_import_func(text);';
+    $oResult = $oDB->query($sSQL);
+
+    if (PEAR::isError($oResult)) {
+        echo "\nERROR: Failed to load nominatim module. Reason:\n";
+        echo $oResult->userinfo."\n\n";
+        exit(1);
+    }
+
     if (!file_exists(CONST_ExtraDataPath.'/country_osm_grid.sql.gz')) {
         echo "Error: you need to download the country_osm_grid first:";
         echo "\n    wget -O ".CONST_ExtraDataPath."/country_osm_grid.sql.gz http://www.nominatim.org/data/country_grid.sql.gz\n";