Solapas principales
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
PHP7
MANUAL PHP https://www.php.net/manual/es/function.mssql-query.php
-------------------
- Inicie sesión para comentar
- 12730 lecturas