php mapscript: ошибка signal Segmentation fault (11)

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

php mapscript: ошибка signal Segmentation fault (11)

Сообщение VolandF » 14 фев 2014, 07:41

Всем доброго времени суток.
Столкнулся с проблемой применения фильтра в php mapscript'е.
Перерыл интернеты, а так же "родной" mail-list, но к сожалению не нашёл ответа.

Работает в мапфайле:
FILTER (id in (386,400))
Но не работает в скрипте:
$roadsLayer->setFilter("id in (386,400)");
соединение сбрасывается, никаках ошибок кроме строки в apache log:
[Thu Feb 13 16:03:33.931054 2014] [core:notice] [pid 716] AH00052: child pid 2626 exit signal Segmentation fault (11)

Конфигурация:
openSuse 13.1, php 5.4.3, Mapserever 6.4.1

Запрос:
localhost/script.php?LAYERS=roads&SRS=EPSG%3A3857&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&BBOX=8562963.8568664,5347815.0968664,8567741.1711336,5352592.4111336&WIDTH=500&HEIGHT=500

mapfile.map:
-----------------------
MAP
NAME "WMSRoadrs"
CONFIG "PROJ_LIB" "/usr/lib/proj/"
STATUS ON
WEB
METADATA
wms_title "Roadrs"
wms_abstract "Roadrs"
wms_onlineresource "http://localhost/msscr/script.php"
wms_srs "EPSG:3857"
wms_enable_request "*"
wms_encoding "utf-8"
END # end METADATA
END # end WEB
PROJECTION
"init=epsg:3857"
END # end PROJECTION
LAYER
NAME "roads"
STATUS ON
CONNECTIONTYPE postgis
CONNECTION "user=user password=1 dbname=db host=localhost"
DATA "coor from tab using unique id using srid=3857"

FILTER (id in (386,400))#-----------работает

TYPE LINE
CLASS
NAME "дороги"
STYLE
COLOR 255 255 255
WIDTH 10
OUTLINECOLOR 0 0 255
OUTLINEWIDTH 1
END # end STYLE
END # end CLASS
PROJECTION
"init=epsg:3857"
END # end PROJECTION
METADATA
wms_title "Demo1"
wms_abstract "Roads Demo1"
wms_srs "EPSG:3857"
wms_include_items "all"
END # end METADATA
END # end LAYER
END # end MAP
---------------

script.php:
----------------
ini_set('display_errors', E_ALL);
error_reporting(E_ALL);
$request = ms_newOwsrequestObj();
if(!empty($_GET)){
foreach ($_GET as $key => $value) {
$request->setparameter($key, $value);
}
}
ms_ioinstallstdouttobuffer();
$map = ms_newMapobj("mapfile.map");
$roadsLayer = $map->getLayerByName("roads");

$roadsLayer->setFilter("id in (386,400)");//-----------не работает

$map->owsDispatch($request);
$contenttype = ms_iostripstdoutbuffercontenttype();
header('Content-type:'.$contenttype);
ms_iogetStdoutBufferBytes();
ms_ioresethandlers();
----------------

Спасибо.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: php mapscript: ошибка signal Segmentation fault (11)

Сообщение Denis Rykov » 17 фев 2014, 09:02

Включите логи на уровне мапсервера (MapScript позволяет это сделать) и посмотрите что там будет. По сути если работает с map-файлом, то и в mapscript должно работать, так как фактически он генерирует такой же map-файл. Если не работает, то возможно какие-то проблемы с синтаксисом - кавычки какие-то потеряли или еще что-нибудь. Думаю логи должны прояснить ситуацию.
Spatial is now, more than ever, just another column- The Geometry Column.

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: php mapscript: ошибка signal Segmentation fault (11)

Сообщение VolandF » 18 фев 2014, 09:20

Denis Rykov, спасибо за ответ
Проблема была из-за использования разных дистрибутивов, отсюда и ошибка сегментации памяти.
Решилось так:
1) удалил Mapserver взятый с оф.сайта мапсервера
2) установил Mapscript взятый с оф.сайта openSuse, благо там с дистрами всё норм.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя