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);
    
?>

 

En la linea :
$link = mssql_connect () sustituimos "192.168.1.221" por la ip de la máquina windows con el servidor sql apuntando a la instancia SQL, por ejemplo:
 
192.168.1.130\VIRTUAL (Si hemos apuntado ya la instancia en freetds sólo con la ip es suficiente para establecer la conexión)
 
192.168.1.130
 
"VIRTUAL" es el nombre de la instancia SQL del servidor MSSQL. Depende de la configuración. Si hemos apuntado ya a la instancia en freetds sólo con poner la ip bastará.
"sa" es el usuario admin de SQL, lo sustituimos por el usuario que tenemos en SQL asociado y con permisos a la base de datos.
 
"sql123" es la contraseña. Sustituimos por la nuestra.

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 

1- Procedimiento para 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

VIDEO DE CONFIGURACIÓN php7

MANUAL PHP https://www.php.net/manual/es/function.mssql-query.php

-------------------

 

Archivo: 

Contenido por etiquetas

Linux Linux Tips Solución Linux Help Drupal Arch-Linux Media Front Hacking Terminal Linux-Distro Shell Mac OSX Videos Linux seguridad Manjaro Windows Servers Consola Linux Guías Comandos Android Ubuntu MacOS Drush Screencast Joomla Cracking Debian PHP Backtrack Command Line Virtualmin Xampp Compiz Fusion Media Youtube Server Drupal 7 Skype mysql Instalación Seguridad Telefonía ROOT Servidor Local ClamAv hacking-windows php7 Windows 10 MS-SQL Antergos Sysmonitor CyanogenMod PDF Libros ownCloud KDE Samba Kali Linux Joomla Seguridad Setup Webmin Grub Views Elastix Drush_Make Escritorio Descargar Nivo Slider error Virtual Wine Whatsapp SCP SSH Unix servidor web Noticias Rootear SQL dd Python google Covid19 sars-cov2 apache Líder Kali red Boot Drush Windows url Limpias ROM Top 500 Metasploit SEO url canonica Katana Asterisk Iphone Chrome Youtube Distros Xampp 1.8.1 XFCE Joomla 3.0 Centos Galaxy S (bootstrap) DARKY´S ROM .make dselect Xwinwrap Views Horizontal Slider Webform GCP grep Triple-Boot exec: 90: : Permission denied Webform_Layout Driver r8168 Open DNS CryptKeeper Kingsoft Office WPS 1and1 VMplayer Inyection SQL Viber Recovery Galaxy S4 Wake On Lan Wol Drupal 8 Real Estate Java6 Alsi Atraci Tails Telegram Sigram duff Fish ncdu PBX g729 Códec Imagesloaded String Streaming htaccess Mounty Django C++ C XP ReacOS MITM Ettercap Wireshark Postfix eXtern OS google-athenticator.app WayBackMachine web.archive.org Homebrew 2-FACTOR 2 factores gmail python3 facturas FOCA mpdf Vaio Sony fruteroloco scanner bmon pipenv authenticator Rarcrack SA-CORE-2013-003 Prestashop LAMP Supercomputadoras sniffing Script Google-Earth Arranque compartir firewall sistema bitacora fallo firestarter Aircrack-ng Galaxy S3 vs Iphone 5 Horizontal Slider Media Vimeo MediaFront Acquia Tilt 3D Cain & Abel Office winAUTOPWN gh22ns50 Metasploitable LPS Conky Webform Layout Gimp Munich Ahorra Papá FINK youtube-dl Sox Redgum Archserver Secure Copy Shutter Encriptar Enlaces Externos Nube Joomla 2.5 Migrar FTP Redes Fing Overlook Fing PhpMyadmin internal server error 500 Cerebro FDesktopRecorder Piropos Geek Texto Sustituir Jdownloader 10 Millones Line Open Source