Rolf B: permission denied unter IIS und php

Beitrag lesen

Hallo GeoSven,

das kann so nicht funktionieren. Wenn ms_newMapobj() eine Exception wirft, gibt's keine Zuweisung mehr und du kannst im Exception-Handler auf oMap nicht zugreifen, da steht dann null oder ein veralteter Wert drin. Die Zuweisung an oMap findet nur statt wenn die Funktion ohne Exception durchläuft - aber dann kommst Du auch nicht in den catch-Teil.

WENN ms_newMapobj eine Exception wirft, ist es in ihrer eigenen Verantwortung, keine Ressourcen festzuhalten. Denn Du bekommst ja keine Handhabe, um irgendwas freizugeben. Blockiert sie dennoch, ist das ein Bug in der ms_newMapObj Funktion bzw. weiter unten in der Aufrufhierarchie.

Hier steht ein Issue dazu: https://github.com/mapserver/mapserver/issues/1994, 2006 wurde von einem User ein Patch dazu angeboten und 2012 ist es endlich auf closed gesetzt worden. In welcher MapServer Version der Fix enthalten sein soll kann ich nicht erkennen, aber wenn das die Reaktionszeit auf Fehler ist, dann aua aua aua...

Setzt Du die neueste MapServer Version ein? Wenn nicht - kannst Du die Neueste ausprobieren? Wenn Du den Fehler mit der neuesten Version immer noch hast, solltest Du das Issue neu öffnen und auf IIS/Windows hinweisen. Ein Issue zu öffnen, wenn man alte Versionen einsetzt, wird normalerweise mit "update erstmal" beantwortet, deshalb ist diese Probe erforderlich.

Eine Alternative könnte sein - nicht, dass ich MapServer kennen würde, aber die API Funktion klingt vielversprechend - die Datei manuell in einen String zu laden und dann ms_newMapObjFromString zu nutzen. Keine Ahnung ob und wie es funktioniert, aber wenn Du die Datei liest und freigibst, dann kann der MapServer sie jedenfalls nicht festhalten.

Rolf

--
sumpsi - posui - clusi