- CORREO: info@fruteroloco.es
- FRUTEROLOCO : TIPS Linux, Macos, Windows ....
Conexión de Web PHP (Linux) a base de datos MS SQL (Windows)
Imaginemos el siguiente escenario:
Tenemos una web en PHP en un servidor Linux con Apache y tenemos una base de datos en un servidor
SQL alojado en una máquina Windows. La base de datos tiene todos los registros de clientes con sus
datos y facturación. Queremos que al hacer login en la web esta haga consultas a la base de datos de
Microsoft SQL server.
VERIFICADO y TRABAJANDO EN DEBIAN 6-7-8 Y CENTOS 7 CON PHP 5 &&
EN DEBIAN 9 CON PHP 7.3
- CON PHP 5
Para poder hacer la conexión entre PHP5 y MS SQLutilizaremos Freetds (set de librerías Linux & Unix)
y la extensión MS SQL. En la familia Debian lo instalamos así:
DEBIAN
--------------------------------------------------------------------------------------------------
sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase
--------------------------------------------------------------------------------------------------------
CENTOS
---------------------------------------------------------------------------------------------------------
Añadir repositorio EPEL
## RHEL/CentOS 7 64-Bit ##
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
---------------------------------------------------------------------------------------------------------------
sudo yum update
----------------------------------------------------------------------------------------------------------
sudo yum install php-mssql
------------------------------------------------------------------------------------------------------------------------
Running transaction
Instalando : unixODBC-2.3.1-11.el7.x86_64
Instalando : freetds-0.95.81-1.el7.x86_64
Instalando : php-mssql-5.4.16-7.el7.x86_64
Comprobando : unixODBC-2.3.1-11.el7.x86_64
Comprobando : php-mssql-5.4.16-7.el7.x86_64
Comprobando : freetds-0.95.81-1.el7.x86_64
Reiniciamos apache:
DEBIAN
sudo /etc/init.d/apache2 restart
CENTOS
service apache2 restart
El archivo de configuración de FREETDS:
DEBIAN
nano /etc/freetds/freetds.conf
CENTOS
nano /etc/freetds.conf
Aquí tenemos que poner la ip del servidor windows seguido de la Instancia del servidor SQL - ejemplo: "192.168.1.130\MSSQL-SERVER"
Ejemplo de configuración en la imagen:

Podemos ver en phpinfo si tenemos la libreria freetds activa: Para comprobarlo creamos un archivo de nombre info.php con el siguiente contenido:
<?php phpinfo(); ?>
Si tenemos xampp movemos el archivo info.php al directorio /opt/lampp/htdocs o si tenemos apache instalado en sistema en /var/www/html. Si tenemos webmin/virtualmin encontraremos nuestro public_html en la carpeta /home ahí estará la carpeta con el nombre del dominio del servidor virtual ejemplo: /home/marspain.sytes.net/public_html/.
Abrimos el navegador y en la url :
http://localhost/info.php
Ahora desde la terminal podemos testear si conecta con MSSQL.
Abrimos una terminal:
tsql -H mi_servidor_sql -p puerto -U usuario_sql -P contraseña -D base_de_datos
Ejemplo:
tsql -H 192.168.1.221 -p 1433 -U sa -P sql123 -D EMPRESA
También podemos utilizar este código php para comprobar la conexión.
Igual que con el info.php el archivo test.php lo copiamos al directorio web y llamamos al archivo desde la url del navegador:
Creamos un archivo test.php con el siguiente código PARA PHP5 (los codes php están al final del post para descargar):
<?php
$link = mssql_connect('192.168.1.221', 'sa', 'sql123');
if(!$link) {
echo 'Could not connect';
die('Could not connect: ' . mssql_error());
}
echo'Successful Sql Connection';
msssql_close($link);
?>
Si la conexión se establece con éxito podremos ver en el navegador:
Successful Sql Connection
Adjunto archivos info.php y test.php en zip a pie de post.
TRABAJANDO EN DEBIAN 6-7-8 CON PHP 5

TRABAJANDO EN CENTOS 7 CON PHP 5
ip servidor linux-> 172.16.52.130
ip servidor windows-> 172.16.52.128

- CON PHP 7
2- Requisitos del sistema para los controladores de Microsoft para PHP para SQL Server )
SI YA HAS HECHO TODOS LOS PASOS PARA PODER CONECTAR DESDE PHP7
CREA UN ARCHIVO PRUEBA.PHP CON EL SIGUIENTE CODE:
<?php
$serverName = "yourServername";
$connectionOptions = array(
"database" => "yourDatabase",
"uid" => "yourUsername",
"pwd" => "yourPassword"
);
// Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
die(formatErrors(sqlsrv_errors()));
}
// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";
// Executes the query
$stmt = sqlsrv_query($conn, $tsql);
// Error handling
if ($stmt === false) {
die(formatErrors(sqlsrv_errors()));
}
?>
Results :
";
foreach ($errors as $error) {
echo "SQLSTATE: ". $error['SQLSTATE'] . "
";
echo "Code: ". $error['code'] . "
";
echo "Message: ". $error['message'] . "
";
}
}
?>
----------------------------------------------------------------------------------------------------------------------------------------
TRABAJANDO EN DEBIAN 9 CON PHP 7.3
MANUAL PHP https://www.php.net/manual/es/function.mssql-query.php
VIDEO PHP5
VIDEO EN PHP7
