php e Microsoft SQL Server (MSSQL)

Reading Time: 2 minutesFavoriteLoadingAggiungi ai preferiti

Php e Microsoft SQL Server (MSSQL) è la soluzione web client/server utilizzata quando ci si trova a lavorare ci si trova a lavorare su server windows

  1. perché ci si deve interfacciare ad un  gestionale che gira su database Microsoft SQL Server
  2. perché si dispone di Microsoft SQL Server e non si può o non si vuole installare MySQL piuttosto che PostgresSQL

Recentemente ho avuto necessità di interfacciarmi ad un SQL Server remoto, ossia ospitato su una macchina diversa da quella su cui stavo sviluppando la mia applicazione.

In pratica ho dovuto mettere un’applicazione web su un server e da questa collegarmi ad un Microsoft SQL Server ospitato su un altro server.

La situazione nel dettaglioo:

  • Applicazione Web scritta in PHP su Mac OSX Mountain Lion con web server Apache 2.4, Php 5.3.15 e ip 192.168.0.1
  • Database Microsoft SQL Server 2008 su macchina con Windows Server 2012 Enterprise e ip 10.0.0.15

Premesso che non sto qui a spiegare come si fa, devo precisare che è necessario configurare Windows 2012 e SQL Server affinché accettino connessioni in entrata sulla porta del SQL Server, in genere la 1433.

Sul server web, dato che non era presente, ho installato il modulo freetds per php in questo modo

  1. ho scaricato il pacchetto tramite  wget ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
  2. ho scompattato il pacchetto con tar jxvf freetds-stable.tgz
  3. cd freetds-0.91/
  4. ho configurato con ./configure –prefix=/private/etc/freetds –with-tdsver=8.0 –sysconfdir=/private/etc/freetds/conf
  5. make
  6. sudo make install
  7. sono andato nei sorgenti della versione di php utilizzata con cd php-5.3.15
  8. mi sono spostato nella directory dell’estensione msssql con cd ext/mssql/ quindi ho dato i seguenti comandi
  9. phpize
  10. ./configure –with-php-config=/usr/bin/php-config –with-mssql=/private/etc/freetds
  11. make
  12. make test
  13. ho copiato il modulo cosi compilato nella directory del php con cp modules/mssql.so /usr/lib/php/extensions/no-debug-non-zts-20090626/
  14. ho editato il file php.ini aggiungendo la direttiva extension=mssql.so
  15. ho riavviato apache
  16. ho decommentato sudo vim /private/etc/freetds/conf/freetds.conf  la riga 13

A questo punto ho testato la connessione

 $myServer = "ip:1433";
     $myUser = "username";
     $myPass = "password";
     $myDB = "database";
    
    //connessione al database
    $dbhandle = mssql_connect($myServer, $myUser, $myPass) or die(mssql_get_last_message());

ed ha funzionato!