Tema Anterior: http://superahacker.blogspot.com/2009/04/instalacion-de-unixodbc-para-la.html
En esta ocasion la situación es como conectar con PHP 5 desde un Servidor Linux a una base de Datos Ms Sql Server en Servidor Windows.
Requisitos en Linux Server (Web):
Apache
FreeTDS http://www.freetds.org/
PHP http://www.php.net/
libsybdb5 php-mssql libraries for connecting to MS SQL and Sybase SQL servers. http://www.php.net/manual/en/book.mssql.php
Requisitos en Windows Server (Database) :
Ms Sql Server Enterprise
Consideraciones:
Siempre es bueno aclarar que los 2 servidores estan en la misma lan y que los puertos tcp ip 1433 del servidor windows en donde esta la base de datos, esta abierto y que ningun software o firewall este bloqueando esta via. ya que Ms Sql Server usa por default este puerto de comunicacion.
consideren usar una version de Ms Sql Server Enterprise que por defecto viene con todas las librerias y directivas de conexion de red habilitadas.
bueno vamos haber como se hace todo esto.
Instalación FreeTds y sus dependencias
Instalación del módulo de PHP para el acceso a bases de datos Microsoft SQL Server.
Configuración de Alias para las conexiones con FreeTds
Editamos el archivo freetds.conf, es en este archivo donde debemos agregar nuestros alias
que manejaremos para nuestras conexion a los diferentes servidores Ms SqlServer que tengamos en la red.
Configuración Formato de Fechas
Editemos el archivo locales.conf, Es bastante comun que necesitemos configurar el manejo del formato de fechas en nuestro servidor, para que php nos devuelva el formato como mejor nos parezca.
Conectando con Tsql a nuestro servidor Ms SqlServer
bueno como se puede observer la conexion esta establecida con el servidor ahora solo es cuestión de ver como esta la configuracion de php y el soporte de mssql.
entonces hagamos nuestro archivo php llamado test.php
y dentro de el pongamos lo siguiente.
Ahora es momento de ver esto en nuestro navegador web http://localhost/test.php y ubiquese en mssql y observe en el parametro library version debe indicar que trabajaremos con FreeTds.
El momento de la verdad, tenemos que hacer una consulta con php a mssql.
entonces vamos a crear un archivo test1.php
dentro de el pongamos lo siguiente, vamos a usar como prueba a base de datos Northwind y mostraremos a los empleados que se encuentran registrados en la tabla employees si se fijan en el funcion mssql_connect("estoy haciendo uso del alias de freetds.conf","el usuario de Mssql","la clave del usuario MsSql")
veamos el resultado en nuestro navegador web {ver para creer}.
En esta ocasion la situación es como conectar con PHP 5 desde un Servidor Linux a una base de Datos Ms Sql Server en Servidor Windows.
Requisitos en Linux Server (Web):
Apache
FreeTDS http://www.freetds.org/
PHP http://www.php.net/
libsybdb5 php-mssql libraries for connecting to MS SQL and Sybase SQL servers. http://www.php.net/manual/en/book.mssql.php
Requisitos en Windows Server (Database) :
Ms Sql Server Enterprise
Consideraciones:
Siempre es bueno aclarar que los 2 servidores estan en la misma lan y que los puertos tcp ip 1433 del servidor windows en donde esta la base de datos, esta abierto y que ningun software o firewall este bloqueando esta via. ya que Ms Sql Server usa por default este puerto de comunicacion.
consideren usar una version de Ms Sql Server Enterprise que por defecto viene con todas las librerias y directivas de conexion de red habilitadas.
bueno vamos haber como se hace todo esto.
Instalación FreeTds y sus dependencias
yum -y install freetds*
Instalación del módulo de PHP para el acceso a bases de datos Microsoft SQL Server.
yum -y install php-mssql*
Configuración de Alias para las conexiones con FreeTds
Editamos el archivo freetds.conf, es en este archivo donde debemos agregar nuestros alias
que manejaremos para nuestras conexion a los diferentes servidores Ms SqlServer que tengamos en la red.
vi /etc/freetds.conf
# Microsoft SQL Server 7.0 [MyServer70] host = 172.16.0.253 port = 1433 tds version = 7.0 #Microsoft SQL Server 2000 [MyServer2000] host = 172.16.0.200 port = 1433 tds version = 7.1 #Microsoft SQL Server 2005 [MyServer2005] host = 172.16.0.201 port = 1433 tds version = 7.2 #Microsoft SQL Server 2008 [MyServer2008] host = 172.16.0.202 port = 1433 tds version = 7.2
Configuración Formato de Fechas
Editemos el archivo locales.conf, Es bastante comun que necesitemos configurar el manejo del formato de fechas en nuestro servidor, para que php nos devuelva el formato como mejor nos parezca.
vi /etc/locales.conf
[default] date format = %d/%m/%Y %H:%M:%S #[default_orig] #date format = %b %d %Y %I:%M%p
Conectando con Tsql a nuestro servidor Ms SqlServer
tsql -S myserver70 -p 1433 -U sa
bueno como se puede observer la conexion esta establecida con el servidor ahora solo es cuestión de ver como esta la configuracion de php y el soporte de mssql.
entonces hagamos nuestro archivo php llamado test.php
touch /var/www/html/test.php <br /> vi /var/www/html/test.php
y dentro de el pongamos lo siguiente.
<?php phpinfo();?>
Ahora es momento de ver esto en nuestro navegador web http://localhost/test.php y ubiquese en mssql y observe en el parametro library version debe indicar que trabajaremos con FreeTds.
El momento de la verdad, tenemos que hacer una consulta con php a mssql.
entonces vamos a crear un archivo test1.php
touch /var/www/html/test1.php vi /var/www/html/test1.php
dentro de el pongamos lo siguiente, vamos a usar como prueba a base de datos Northwind y mostraremos a los empleados que se encuentran registrados en la tabla employees si se fijan en el funcion mssql_connect("estoy haciendo uso del alias de freetds.conf","el usuario de Mssql","la clave del usuario MsSql")
<?php $msconnect=mssql_connect("MyServer70","sa",""); $msdb=mssql_select_db("Northwind",$msconnect); $msquery = "select titleofcourtesy,firstname,lastname from employees"; $msresults= mssql_query($msquery); while ($row = mssql_fetch_array($msresults)) { echo "<li>" . $row['titleofcourtesy'] . " " . $row['firstname'] . " " . $row['lastname'] . "</li> \n"; } ?>
veamos el resultado en nuestro navegador web {ver para creer}.
Hola Superahacker, no he podido inatalar el unixODBC-GUI , me sale lo siguiente que hago.
ResponderBorrarGracias,
gogo
[root@dhcppc6 ~]# yum -y install unixODBC-GUI-Qt
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* rpmforge: apt.sw.be
* base: dist1.800hosting.com
* updates: mirror.ash.fastserv.com
* addons: mirrors.netdna.com
* extras: mirrors.netdna.com
Setting up Install Process
Parsing package install arguments
No package unixODBC-GUI-Qt available.
Nothing to do
Hola Gogo, gracias por los comentarios que muy tarde puedo responder. en un tema anterior escribi sobre YUM Repositorios podrias revisarlo para encontrar los paquetes http://superahacker.blogspot.com/2009/04/yum-repositorio-centos-5.html
BorrarHola Superahacker, tengo un problema
ResponderBorrarlocale is "es_ES.UTF-8"
locale charset is "UTF-8"
Password:
Msg 20009, Level 9, State 0, Server OpenClient, Line 0
Server is unavailable or does not exist.
There was a problem connecting to the server
tengo este error
lo hice tal cual me podrias ayudar
Hola Willians,
Borraral parecer por el mensaje de error tienes problemas de conexion con el OpenClient desde tsql y se puede deber al soporte de FreeTDS con la versión de MsSQL, las pruebas realizadas fueron hechas sobre MsSQL 7 y MsSQL2000, seria bueno saber la versión de Windows y MsSQL que estas intentando conectar por el Firewall y los permisos de conexiones remotas.
error u.u algo hago mal.. llevo varios días intentando conectarme desde php a el sql server (centOs - win server2003) y no mas nee
ResponderBorrarencontré este post (muy bueno) pero ni así puedo realizar una conexión exitosa desde php...
con tsql -S myserver70 -p 1433 -U sa
si conecta y veo mis datos y todo.. pero
php nop.. alguna sugerencia de por que podría ser?
si tengo el php_mssql y el phpinfo(); me dice q esta = q en la img q pones pero no conecta u.u'
Hola, me parece excelente el articulo publicado y he avanzado en el tema, pero me quedo en al mitad, no logro modificar el php.ini de tal manera que cuando ejecute phpinfo() me muestre la pantalla como la muestras. Puedes ayudarme por favor.
ResponderBorrarHola Liliana
BorrarSi hiciste la instalación del Modulo php-mssql
yum -y install php-mssql*
Verifica que la extension php-mssql este activada en CentOS existe un directorio donde se cargar las configuraciones adicionales para php php.d ubica en el /etc/php.d/mssql.ini y observa si la extesion se encuentra activada.
extension=mssql.so
a mi tamoco me sale esa parte
BorrarHola como estas????
ResponderBorrarsegui los procedimientos que publicaste, pero me puedo enlasar a SQLSERVER 2000 por consola, pero al momento de generar el script de php no aparece nada, que puede ser????
Hola Luis
BorrarEs difícil hacer de adivino, seria bueno que activaras el reporte de errores en php y mostrarnos que es lo que responde el servidor.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("file_with_errors.php");
?>
Hola Luis,
ResponderBorraren oportunidades he visto que volviendo a reinstalar el soporte de MSSQL para php resuelve el problema de configure. tendrias que quitarlo para volver a instalarlo
yum remove php-mssql*
yum -y install php-mssql*
y por ultimo revisar el fichero phpinfo().
Buenas Superhacker, sabes he logrado conectarme con tsql y revisar el estado del servidor mssql, lo que no he podido lograr es conectarme a traves del php (test1.php)
ResponderBorrarWarning: mssql_connect() [function.mssql-connect]: Unable to connect to server: MyServer2005 in /var/www/html/index.php on line 5
Saludos!
Hola Buenos dias.
ResponderBorrarHe instalado todo pero siempre me esta mostrando este mensaje:
PHP Warning: mssql_connect(): Unable to connect to server:
He intentado de varias maneras pero no me funciona sigue mostrando este mensaje, estas son las pruebas que he realizado:
Prueba 1: $msconnect=mssql_connect("10.1.1.209","sa","mipassword");
Prueba 2: $msconnect=mssql_connect("SVRDLLOSINCO\WORK","sa","mipassword");
Prueba 3: $msconnect=mssql_connect("SVRDLLOSINCO","sa","mipassword");
Y con el tsql me muestra esto:
[root@correo2 httpd]# tsql -S 10.1.1.27 -p 1433 -U sa
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password:
Msg 20009, Level 9, State 0, Server OpenClient, Line 0
Server is unavailable or does not exist.
There was a problem connecting to the server
Que mas podré validar?