Buongiorno a tutti, vado dritto al problema!

Su un server Hertzner, su cui gira Debian, ho sviluppato diverse webapp, quelle che mi stanno dando problemi risalgono a diversi anni fa, tutte scritte in php, la libreria usata è OpenLayers 2.

Negli anni, pacchetti e distro, sono stati sempre aggiornati e tutto ha funzionato alla perfezione...motivo per cui non è mai stato fatto un refactoring del codice (in realtà, il vero motivo, è che non c'erano fondi per "svecchiare" le app!!!).

La struttura generale è la seguente:

 * distro: Debian stable
 * apache v. 2.4
 * tomcat v. 9
 * geoserver v. 2.13
 * openlayers 2
 * postgresql 13
 * postgis 3.1

Stendiamo un velo pietoso sull'utilizzo di openlayers 2, cause di forza maggiore!

Tutte le geometrie sono gestite da postgis e servite da geoserver via tomcat. Per la visualizzazione delle mappe le applicazioni utilizzano sia il protocollo wms che wfs (per inserimento/modifica/eliminazione delle geometrie).

Da qualche settimana ho notato un problema con le richieste wfs, problema rilevato anche da firebug che mi dà il classico "internal server error", mentre il log di apache dice che: [cgi:error] [pid 7596] [client ::1:52300] AH01215: (8)Exec format error: exec of '/usr/lib/cgi-bin/proxy.cgi' failed: /usr/lib/cgi-bin/proxy.cgi [cgi:error] [pid 7596] [client ::1:52300] End of script output before headers: proxy.cgi

In realtà, oltre a non visualizzare le geometrie vettoriali (di seguito un esempio)
ubi_mater = new OpenLayers.Layer.Vector("ubi_mater", {
    strategies: [new OpenLayers.Strategy.BBOX()],
    protocol: new OpenLayers.Protocol.WFS({
      version:     wfsConf.version,
      url:         wfsConf.url,
      featureNS:   wfsConf.featureNS,
      srsName:     wfsConf.srsName,
      geometryName:wfsConf.geometryName,
      featureType: "ubi_mater",
      schema:      wfsConf.schema+"ubi_mater"
    })
  });
  map.addLayer(ubi_mater);

le applicazioni mi danno problemi anche con la funzione "OpenLayers.Control.WMSGetFeatureInfo", con la quale mi tiro fuori l'id della geometria che utilizzo per interrogare postgresql e mostrare tutta una serie di info legate alla geometria interrogata, ma al click sulla geometria invece dei dati ho un array vuota:

info = new OpenLayers.Control.WMSGetFeatureInfo({
    url: 'http://xxxx.xxx.xxx.xxx:8080/geoserver/wms',
    title: 'Informazioni sui livelli interrogati',
    queryVisible: true,
    layers: listalayer,
    infoFormat: 'application/vnd.ogc.gml',
    vendorParams: {buffer: 10},
    eventListeners: {
      getfeatureinfo: function(event) {
        var arr = new Array();
        var arrActive = new Array();
        var arrArea = new Array();
        for (var i = 0; i < event.features.length; i++) {
          var feature = event.features[i];
          var attributes = feature.attributes;
          var id_ai = attributes.id_geom;
          var id_area = attributes.id_area;
          arr.push("area_int_poly.id = "+id_ai);
          arrArea.push('id_area = '+id_area);
        }
        $(".ai:checked").map(function(){arrActive.push('dgn_tpsch = '+$(this).attr('data-tipo'));});
        $.ajax({
          url: 'inc/popupAi.php',
          type: 'POST',
          data: {arr:arr,arrActive:arrActive,arrArea:arrArea},
          success: function(data){
            console.log(data)
            $("#result").animate({left:"0px"}).addClass('opened');
            $("#resultContent").html(data);
          }
        });
      }
    }
  });
  map.addControl(info);
  info.activate();

Ovviamente apache ha tutti i moduli correttamente abilitati, il file proxy ha i permessi settati su 755, e i vari virtual host hanno tutte le direttive relative all'esecuzione degli script cgi...e ovviamente il codice non è stato recentemente modificato.

Vi riporto un esempio[0] di virtual host. Ho provato a fare diverse operazioni, compresa quella di reinstallare e riconfigurare completamente apache (magari c'era qualche configurazione strana!), ho anche provato a replicare tutto sul mio pc, ho provato a modificare i virtual host cambiando il percorso del proxy e inserendo quello di default (/usr/lib/cgi-bin/proxy.cgi), ho cambiato l'intestazione del file proxy indicando python3 come eseguibile da utilizzare, ma il problema persiste.

Per completezza di informazioni vi dico che:

 * se provo ad aprire il link localhost/cgi-bin/proxy.cgi mi dà
   "internal server error"
 * se provo ad aprire il proxy.cgi presente nella cartella
   dell'applicazione specifica mi fa vedere il codice del file, come se
   non fosse presente il modulo cgi di apache (che ovviamente è abilitato)

Consigli? A parte di riscrivere il codice con librerie non obsolete!!!!

Grazie a tutti

-beppe-

[0] <VirtualHost localhost/cembra:80>
    ServerName localhost/cembra
    ServerAdmin beppenapo@gmailcom
    DocumentRoot /var/www/html/cembra
    ############## mia configurazione #############
    <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/html/cembra>
                Options +Indexes +FollowSymLinks +MultiViews +ExecCGI
                AllowOverride None
                AddHandler cgi-script .cgi
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/html/cembra/cgi-bin/
        <Directory /var/www/html/cembra/cgi-bin>
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                AddHandler cgi-script .cgi
                Require all granted
        </Directory>

        ProxyPass /geoserver http://xxx.xxx.xxx.xxx:8080/geoserver
        ProxyPassReverse /geoserver http://xxx.xxx.xxx.xxx:8080/geoserver
        <Location /geoserver>
                Require all granted
        </Location>
    ###############################################

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>



_______________________________________________
[email protected]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni 
dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019

Rispondere a