Category Archives: autoconf

Problems building and using mssql.so php extension, AMPPS server on MAC OSX

I hope this is the right place for this question. Server fault it seems was not the right place.

I am having trouble building a working mssql.so php extension for my server.

I have been using an AMPPS server on mac to serve php based websites, accessing MySQL databases.

Now I need to connect to an MSSQL database. The AMPPS php installation does not include the mssql extension so when I try to use mssql_connect() I get the following error.

Call to undefined function `mssql_connect()` in /Applications/AMPPS/www/test.php

I think I need to add mssql.so to the php/lib/extensions/ext folder and then add

extension=mssql.so  

to my php.ini file.

To build mssql.so I have found a couple of online tutorials that both use Freetds:

http://lkrms.org/php-with-freetds-on-os-x-mavericks/#comment-82521

http://blog.benjaminwalters.net/?p=10

I used home brew to install autoconf:

brew instal autoconf

Then I downloaded and installed freetds:

./configure --prefix=/usr/local/freetds --sysconfdir=/usr/local/freetds/conf/freetds --disable-libiconv --disable-odbc  

make

sudo make install

Freetds was installed at /usr/local/freetds. Then I downloaded php. I have tried this with all the versions available for download 5.6.2, 5.5.18, 5.4.32 and 5.3.29. 5.3.29 had a problem and I could not generate mssql.so.

All of the other versions successfuly produced mssql.so using the following method:

Unzip package in downloads folder

cd php-5.4.17/ext/mssql

phpize

./configure --with-php-config=/usr/bin/php-config --with-mssql=/usr/local/freetds

make

Then I copy the generated mssql.so to /Applications/AMPPS/php-5.4/lib/extensions/ext and add this to the php.ini file.

extension=mssql.so 

I restart the apache server and view the error / log file which has the following error:

PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so' - dlopen(/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so, 9): no suitable image found.  Did find:\n\t/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so: mach-o, but wrong architecture in Unknown on line 0

So it seems like I have built mssql.so for the wrong architecture?

I looked at the terminal output when I configure the "make" for mssql.so and found the following indicating the architecture it is being made for:

checking build system type... i386-apple-darwin13.1.0
checking host system type... i386-apple-darwin13.1.0
checking target system type... i386-apple-darwin13.1.0

So it looks like I made it for i386. This is where I start to get confused.

After make the terminal instructs me to run "make test", I do this and receive the following output:

   ===================================================================== 
    PHP         : /usr/bin/php  PHP_SAPI    : cli PHP_VERSION : 5.4.24

    ZEND_VERSION: 2.4.0 PHP_OS      : Darwin - Darwin myMac13.1.0 Darwin

    Kernel Version 13.1.0: 

    Thu Jan 16 19:40:37 PST 2014;

    root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64 

    INI actual  : /Users/user/downloads/php-5.6.2/ext/mssql/tmp-php.ini More .INIs  : 

    CWD         : /Users/user/Downloads/php-5.6.2/ext/mssql Extra dirs :

     VALGRIND:Notused

     ===================================================================TIME START 2014-10-26 11:53:50

     =====================================================================

No tests were run. It does not say why no tests were run which is frustrating. It mentions x86_64 which is not i386.

I tried to check what architecture my system is to verify if it should be i386 or x86_64.

I did this with uname and arch as follows:

uname -p 

i368

uname -m

x86_64

arch

i386

So my machine hardware is x86_64 (uname -m) but the processor architecture is i386 (uname -p) I don't understand how these can be different or what the implications of this are.

So have I built mssql.so for the wrong architecture or have I done something else wrong? If I have built it for the wrong architecture then how do I configure it to build for the correct one?

Many thanks for any help with this.