Suite

Comment compiler ou trouver la dernière version de PHP MapScript (MapServer) pour Windows ?

Comment compiler ou trouver la dernière version de PHP MapScript (MapServer) pour Windows ?


J'ai eu de grosses difficultés de performance avec MapServer version 6.0.3 (MS4W 3.0.6) et besoin dernière version de MapScript mais je ne le trouve pas pour Windows.

Tout le monde peut m'aider à trouver le dernier compilé (binaire) de MapScript (PHP) ou le compiler à partir des sources pour Windows ?


Je n'ai pas trouvé de php_mapscript compilé pour aucun PHP actuel, alors j'ai essayé de le compiler moi-même. Cela m'a pris beaucoup de temps et beaucoup d'échecs, mais je l'ai fait.

Je ne sais pas si vous en avez plus besoin puisque votre message date de plus d'un an, mais j'ai php_mapscript.dll construit contre php-5.6.27-win32-vc11-ts-x86 et Mapserver-7.0-vc11-x86 (stable package de branche pour 7-0 de gisinternals) maintenant.

La courte histoire pour obtenir le php_mapscript.dll est :

Construisez php comme décrit dans la documentation sur le site Web php. J'ai mon php-sdk surC:devworkphp-dev. Téléchargez gisinternals sdk et extrayez tout pourC:gisinteralssdk. Décompressez tout dans le même répertoire pour obtenir des répertoirespoubelle,doc,gdal,comprendre,lib,serveur de cartes,regex-0.23,version-1700etSWIG-1.3.39à l'intérieurC:gisinteralssdk.

J'ai cloné le référentiel mapserver sur github et appliqué les modifications nécessaires pour réussir à compiler php-mapscript sur https://github.com/AlexanderGabriel/mapserver. À ce stade, vous décidez de fusionner les changements de branchebranch-7-0-fixphpmapscriptwin32buildwithcmakeau mapserver-sources pour être sur le référentiel officiel ou simplement cloner le référentiel avecgit clone https://github.com/AlexanderGabriel/mapserver/ C:gisinteralssdkmapserver.

Je viens d'ouvrir une pull-request et j'espère qu'ils l'incluront dans les futures versions.

Ces commandes feront le reste :

cd C:gisinteralssdkmapserver mkdir build cd build cmake… -G "NMake Makefiles" -DBUILD_SHARED_LIBS=1 -DCMAKE_BUILD_TYPE=Release -Wno-dev -DCMAKE_PREFIX_PATH=C:gisinteralsssdk;sd:kgisinteral; lib;C:gisinteralssdkinclude -DREGEX_DIR=C:gisinteralssdk egex-0.12 -DWITH_SOS=1 -DWITH_KML=1 -DWITH_CLIENT_WMS=1 -DWITH_CLIENT_WFS=1 -DWITH_THREAD_SAFETY_=1 -DWITH_OBRAIRDC=1 -DWITH_O. =C:gisinteralssdklibcairo.lib -DWITH_SVGCAIRO=1 -DSVGCAIRO_LIBRARY=C:gisinteralssdkliblibsvg-cairo.lib -DSVG_LIBRARY=1 -DSVG_LIBRARY=C:gisinteralsssdkliblibsth=vg.lib 0

Teste si ça marche avecnfaire. Activez ensuite php :

cmake… -DWITH_PHP=1 -DPHP5_INCLUDES=C:devworkphp-devphpdevvc11x86php-5.6.27-src -DPHP5_EXTENSION_DIR=C:gisinteralssdk

Et enfin construire PHP-MapScript avecnfaire.

Je ne sais pas si vous connaissez CMake. Choisissez vos options nécessaires. PostGIS fonctionne si vous installez PostGIS sur votre système et ajoutez le chemin d'accès au répertoire in à la variable PATH de vos systèmes ou utilisateurs avant de démarrer CMake pour la première fois.

À partir de ce point, il est plus facile de modifier n'importe quelle bibliothèque vers une version différente ou de modifier les options CMake pour activer une fonctionnalité nécessaire. Il m'a fallu plusieurs jours pour compiler mapscript la première fois (je ne savais pas du tout si je pouvais le faire), mais j'ai ensuite commencé à réduire le travail à ces quelques étapes. À mon avis, il est totalement fou et inutile de compiler toutes les dépendances à partir de zéro. Différents systèmes de construction, beaucoup à lire, à faire et à tester. Si tu veux, tu peux avoir mes notes à ce sujet mais je ne recommencerai pas comme ça ;)

Le processus de construction PHP est vraiment simple. Exactement comme décrit sur https://wiki.php.net/internals/windows/stepbystepbuild.

Parce que je ne suis pas très expérimenté dans ce Windows-Build-Stuff, je ne suis pas sûr que tout ce que j'ai changé soit bon. Alors s'il vous plaît, testez, testez, testez avant de l'utiliser en production.

J'espère que cela vous aide à construire votre PHP-Mapscript. Tout commentaire est le bienvenu.

PS : je pourrais compiler php-mapscript 'sous Windows' avec la nouvelle fonctionnalité "Linux Subsystem" de Windows 10 en quelques minutes. Il existe même des packages dans les référentiels, vous pouvez donc les installer avec apt-get. Vous pouvez y installer un Apache et le démarrer. Il écoutera sur 'localhost' de votre Windows-Machine. Fou mais cela fonctionne et vous pouvez accéder à Mapfiles sur C ou sur tout autre lecteur à partir de là. Donc, si vous souhaitez uniquement utiliser Windows pour le développement, cela peut être une option. Mais pas encore pour la production.

MISE À JOUR 2017-01-04 : Le projet Mapserver a fusionné ma pull-request sur github. La version 7.0.3 contient tous les correctifs mais aucune documentation mise à jour. Dans la branche actuelle, il existe déjà une nouvelle documentation dans README.WIN32 pour Mapserver et PHP/MapScript afin que vous puissiez utiliser la documentation pour construire Mapserver avec PHP/MapScript sur Windows


Depuis que vous avez posté votre question, MapServer pour Windows (MS4W) a publié une nouvelle version, qui fournit la version 7 de MapServer et la prise en charge de MapScript pour PHP, Python, Java et CSharp.

Une source alternative de binaires Windows pour MapServer (avec prise en charge de Mapscript) peut être trouvée auprès de GISInternals