Skip to content
Thomas Bonfort edited this page Apr 6, 2012 · 2 revisions

General information on Unix builds can be found in the UNIX Compilation and Installation HOWTO:

http://www.mapserver.org/installation/unix.html

See also the MapServerCompilation page which contains links to detailed instructions for various platforms and !MapServer versions.

= Build PHPMapScript on Linux =

Also see [wiki:PHPBuildDebugLinux]. The [wiki:PHPMapScript] page also contains links to other resources including detailed instructions for specific platforms such as !RedHat and Debian.

Compiling !MapServer and PHPMapScript in Spanish language is available on SpanishLinuxInstall.

I finally have this all working after a long ordeal. But before I go into the details, I want to give public THANKS to Daniel Morissette of DM Solutions Group. He provided significant support and advice that enabled me to work through many issues. I seems straight forward after the fact, but it was not intuitive and I seemed to have turn down every dead end that exsisted. So Daniel, Thanks!, your assistance is greatly appreciated.

Now the details before they escape my seive of brain.

My configuration:

  RedHat 6.2, Linux 2.2.18                                                                                                                                                                                                                                                                                                                                                                                                                        
  apache_1.3.22.tar.gz                                                                                                                                                                                                                                                                                                                                                                                                                            
  php-3.0.18.tar.gz                                                                                                                                                                                                                                                                                                                                                                                                                               
  mapServer 3.5 Released                                                                                                                                                                                                                                                                                                                                                                                                                          

I made scripts with all the configure parameters so I could have some repeatability and to verify what I actually ran last. I also did a "make clean" and "rm config.cache" in the scripts so when I made changes I was sure they were used.

Here are a few of the problems that I ran into:

  1. building things as DSO is very different than build things as static or CGI. After I got PHP3 built for debugging and
    found out that my multiple version of regex was causing memory structures to be miss-aligned, it still took me
    another half a day to get a working version to build. And worst of all the interdependance between apache/php
    /mapscript is pathological at best.

  2. TOO many versions of regex! There is one bundled with apache, another one bundled with php3, a system
    version(regex.h) and an rx lib version. Everybody needs to use the SAME version. I could ONLY get things to work when
    I forced everyone to use the system-regex. First off if you read the WMS documentation it talks about rx lib, just
    forget about this (IE: Dont down load it! I did and had to uninstall it to get mapserver to build in the first
    place). This required finding and setting --disable-rule=WANTHSREGEX=no in apache so it does not use its bundled
    version.

For PHP3, if you are building the CGI version then you can specify --with-system-regex and your home free, BUT if
your building a DSO with --with-apxs=/usr/sbin/apxs then it will look at the /usr/sbin/apxs to see if apache was
built with its bundled regex and if it was then it will ignore the --with-system-regex. Also when you configure
mapserver, it will look at the php's config.h file to determine if it should use the php bundled version of regex or
not.

  1. Build PHP3 as a DSO. There is a nasty problem that apxs is broken. This is easily fixed if you edit /usr/sbin/apxs and search for "-shared" and insert before it "-export-dynamic " before you run make on php3. Also be aware that if you rebuild and install apache it you will need to fix apxs again.

  2. All the options as defined in ./configure --help do NOT work correctly or are ignored because of other conditions which allow you to easily get very confused. For example, --without-apxs or --with-apxs=no do not work, --without-system-regex does not work There may have been others, but I can't remember.

  3. Open Issues:

a) I never got the CGI version of PHP3 to work with my build of apache. b) When I build apache using the config below php4 broke and I have not gone back to look into that issue.

So like I said, it seems pretty simple in hindsight, but I had spent the better part of 5 days over the last 2 weeks working on this. It was easier to set up my Linux firewall :)

My scripts for apache, php3 and mapserver follow:

[woodbri@linus linux]$ cat doit-apache                                                                                                                                                                                                                                                                                                                                                                                                            
make clean                                                                                                                                                                                                                                                                                                                                                                                                                                        
rm config.cache                                                                                                                                                                                                                                                                                                                                                                                                                                   
./configure                                                                                                                                                                                                                                                                                                                                                                                                                                       
--enable-module=all                                                                                                                                                                                                                                                                                                                                                                                                                               
--enable-shared=max                                                                                                                                                                                                                                                                                                                                                                                                                               
--with-layout=RedHat                                                                                                                                                                                                                                                                                                                                                                                                                              
--disable-rule=WANTHSREGEX=no                                                                                                                                                                                                                                                                                                                                                                                                                     
make                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                  
[woodbri@linus linux]$ cat doit-php3                                                                                                                                                                                                                                                                                                                                                                                                              
make clean                                                                                                                                                                                                                                                                                                                                                                                                                                        
rm config.cache                                                                                                                                                                                                                                                                                                                                                                                                                                   
./configure                                                                                                                                                                                                                                                                                                                                                                                                                                       
--prefix=/usr                                                                                                                                                                                                                                                                                                                                                                                                                                     
--with-config-file-path=/etc/httpd                                                                                                                                                                                                                                                                                                                                                                                                                
--enable-safe-mode                                                                                                                                                                                                                                                                                                                                                                                                                                
--enable-versioning                                                                                                                                                                                                                                                                                                                                                                                                                               
--with-apxs=/usr/sbin/apxs                                                                                                                                                                                                                                                                                                                                                                                                                        
--enable-force-cgi-redirect                                                                                                                                                                                                                                                                                                                                                                                                                       
--enable-discard-path                                                                                                                                                                                                                                                                                                                                                                                                                             
--with-exec-dir=/usr/bin                                                                                                                                                                                                                                                                                                                                                                                                                          
--with-system-regex                                                                                                                                                                                                                                                                                                                                                                                                                               
--with-zlib                                                                                                                                                                                                                                                                                                                                                                                                                                       
--with-gdbm                                                                                                                                                                                                                                                                                                                                                                                                                                       
--disable-debug                                                                                                                                                                                                                                                                                                                                                                                                                                   
--enable-debugger                                                                                                                                                                                                                                                                                                                                                                                                                                 
--enable-magic-quotes                                                                                                                                                                                                                                                                                                                                                                                                                             
--enable-track-vars                                                                                                                                                                                                                                                                                                                                                                                                                               
--enable-sysvsem                                                                                                                                                                                                                                                                                                                                                                                                                                  
--enable-sysvshm                                                                                                                                                                                                                                                                                                                                                                                                                                  
--enable-track-vars                                                                                                                                                                                                                                                                                                                                                                                                                               
--with-xml                                                                                                                                                                                                                                                                                                                                                                                                                                        
--with-ftp                                                                                                                                                                                                                                                                                                                                                                                                                                        
--with-jpeg                                                                                                                                                                                                                                                                                                                                                                                                                                       
--without-ttf                                                                                                                                                                                                                                                                                                                                                                                                                                     
--with-gd                                                                                                                                                                                                                                                                                                                                                                                                                                         
--with-mysql=/usr                                                                                                                                                                                                                                                                                                                                                                                                                                 
make                                                                                                                                                                                                                                                                                                                                                                                                                                              
make install                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                  
[woodbri@linus mapserver]$ cat doit-3.5                                                                                                                                                                                                                                                                                                                                                                                                           
make clean                                                                                                                                                                                                                                                                                                                                                                                                                                        
rm config.cache                                                                                                                                                                                                                                                                                                                                                                                                                                   
./configure                                                                                                                                                                                                                                                                                                                                                                                                                                       
--with-perl-options=PREFIX=/usr                                                                                                                                                                                                                                                                                                                                                                                                                   
--with-ogr --with-gdal                                                                                                                                                                                                                                                                                                                                                                                                                            
--with-wmsclient                                                                                                                                                                                                                                                                                                                                                                                                                                  
--with-proj                                                                                                                                                                                                                                                                                                                                                                                                                                       
--with-php=/home/woodbri/linux/php-3.0.18                                                                                                                                                                                                                                                                                                                                                                                                         
--with-apxs=/usr/sbin/apxs                                                                                                                                                                                                                                                                                                                                                                                                                        
make                                                                                                                                                                                                                                                                                                                                                                                                                                              
}}
Clone this wiki locally