Configurar PHP para conectarse a SQL Server

En este post voy a explicar la manera que me funcionó para poder configurar PHP para que se pueda conectar a SQL Server 2017.

Para poder realizar esta configuración, estaré en el supuesto que ya se tiene instalado lo siguiente:

Ya teniendo instalado todo ésto, vamos a proceder a ejecutar lo siguiente para la configuración.

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Ya como root, realizamos lo siguiente:

root@vboxlinuxmintjx # pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system
root@vboxlinuxmintjx ~ # pecl install sqlsrv

Si obtenemos el siguiente error:

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

Instalamos el siguiente paquete para corregirlo:

root@vboxlinuxmintjx # apt-get install autoconf

Continuamos con la instalación y si ahora obtenemos el siguiente error:

root@vboxlinuxmintjx # checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/tmp/pear/temp/pear-build-rootTlVXJL/sqlsrv-4.3.0':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
ERROR: `/tmp/pear/temp/sqlsrv/configure --with-php-config=/usr/local/php/bin/php-config' failed

Instalamos el siguiente paquete para corregirlo:

root@vboxlinuxmintjx # apt-get install g++

Continuamos con la instalación y si ahora ya se instaló correctamente mandándonos el siguiente mensaje:

Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-zts-20170718/sqlsrv.so'
install ok: channel://pecl.php.net/sqlsrv-4.3.0
Extension sqlsrv enabled in php.ini

Entonces continuamos con la instalación del siguiente paquete:

root@vboxlinuxmintjx # pecl install pdo_sqlsrv

Una vez instalado correctamente se muestra el siguiente mensaje:

Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-zts-20170718/pdo_sqlsrv.so'
install ok: channel://pecl.php.net/pdo_sqlsrv-4.3.0
Extension pdo_sqlsrv enabled in php.ini

Esta instalación agregó las siguientes líneas en el archivo php.ini y si no las colocó, entonces hay que agregarlas:

extension="pdo_sqlsrv.so"
extension="sqlsrv.so"

Ahora reiniciamos el servidor Apache:

root@vboxlinuxmintjx # apachectl restart

Ahora podemos crear un archivo con la siguiente línea. En mi caso creé el archivo phpinfo.php en el directorio /usr/local/apache/htdocs:

<?php phpinfo(); ?>

Al ejecutar el archivo, nos mostrará la configuración y ahí podremos ver que ya se encuentra la extensión PDO de SQL Server la cual se llama pdo_sqlsrv.

jx_post_1057_01

Con esto ya tenemos configurado nuestro PHP para conectar con SQL Server.

Aquí dejo un archivo que obtuve de este artículo para que puedan comprobar la conexión a la base de datos, sólo se deberán cambiar los parámetros para conectarse a la base de datos. Sólo hay que quitar las extensión .txt para ejecutarlo.

Instalar PHP desde fuentes en GNU/Linux habilitando PDO para conexión a base de datos

En mi otro blog había hecho el post:

Instalar PHP desde fuentes en GNU/Linux

Este post no difiere mucho del que hice en el otro blog, sólo que se muestra como compilar PHP para poder usar las funciones de conexión y manejo de base de datos de la extensión PDO, la cual es la que ya a partir de hace algunos años, es la manera en que se debe conectar y manera la base de datos.

Antes que nada deberemos tener instalado ya Apache, aquí dejo este artículo actualizado para su instalación.

También deberemos descargar PHP.

php-7.2.1.tar.bz2

Ya instalado el servidor web y descargado los fuentes de PHP, vamos a realizar los siguientes pasos:

Para este post, tomaré de ejemplo MySQL

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Siguiente:

root@vboxlinuxmintjx $ cp /ruta/donde se descargo/php-7.2.1.tar.bz2 /usr/local/src/
root@vboxlinuxmintjx $ cd /usr/local/src/
root@vboxlinuxmintjx $ tar -jxvf php-7.2.1.tar.bz2
root@vboxlinuxmintjx $ cd php-7.2.1/
root@vboxlinuxmintjx $ ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-pdo-mysql

Si nos manda el siguiente error:

checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.

Instalamos el siguiente paquete pare resolver el error:

root@vboxlinuxmintjx $ apt-get install libxml2-dev

Instalado el paquete anterior, continuamos con la instalación.

root@vboxlinuxmintjx $ make
root@vboxlinuxmintjx $ make install

Una vez terminada la compilación e instalación, deberemos copiar el archivo php.ini al directorio de instalación. Se nos proporcionan 2 archivo el php.ini-development y php.ini-production, yo utilizaré el primero para este ejemplo ya que lo utilizo más para desarrollo y prefiero su configuración para este fin.

root@vboxlinuxmintjx $ cp php.ini-development /usr/local/php/lib/php.ini

Ahora deberemos editar el archivo httpd.conf de apache, el cual en este ejemplo se encuentra en el directorio /usr/local/apache/conf/. En dicho archivo deberemos buscar las siguientes líneas:

 #
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Y arriba de éstas agregaremos las líneas respectivas de PHP para que nos quede esa sección de esta forma:

 #PHP
AddType application/x-httpd-php .php .html .phtml .php3 .php4 .php5. .php7 .htm
AddType application/x-httpd-php-source .phps
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Aquí le estamos indicando a Apache que los archivos con extensiones .php .html .phtml .php3 .php4 .php5 .php7 .htm pueden interpretar el código de PHP.

También buscaremos las siguientes líneas:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Y agregaremos el archivo index.php para que sea interpretado como archivo principal.

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Si tienen el proceso de apache funcionando, deberán darlo de baja:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl stop

Y ahora deberán levantarlo:

root@vboxlinuxmintjx $ /usr/local/apache/bin/apachectl start

Ahora apache ya puede interpretar nuestras páginas con código de PHP.

Si queremos probar que esté funcionando Apache con PHP, podemos poner un archivo llamado phpinfo.php dentro del directorio /usr/local/apache/htdocs/ (solo el usuario root puede escribir en este directorio para fines de este ejemplo) y agregarle la siguiente línea:

<?php phpinfo(); ?>

Ahora en nuestra navegador ingresamos a la siguiente dirección: http://localhost/phpinfo.php

Recuerda que si tu Apache está corriendo en otro puerto, como por ejemplo el 8080, deberás ingresar de la siguiente manera desde el navegador: http://localhost:8080/phpinfo.php

Donde nos aparecerá algo como ésto:

jx_post_1044_01

Dentro de esa misma pantalla, podemos buscar que ya está habilitado PDO para MySQL.

jx_post_1044_02

En mi caso me gusta agregar la ruta de las herramientas en el PATH de todos los usuarios, para ello hay que editar el archivo como usuario root:

/etc/profile

y agregamos las siguientes líneas:

export PHP=/usr/local/php
export PATH=$PATH:$PHP/bin

Con esto concluimos la configuración.

Desinstalar SQL Server 2017 en Linux Mint 18.3 y distribuciones basadas en Ubuntu

Si ya tenemos instalado SQL Server 2017 y deseamos desinstalarlo junto con sus herramientas, lo que hay que realizar es lo siguiente.

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Ejecutamos el siguiente comando:

root@vboxlinuxmintjx $ apt-get install mssql-server mssql-tools unixodbc-dev

Ahora borramos los siguientes directorios:

root@vaiolinuxmintjx $ rm -rf /var/opt/mssql/
root@vaiolinuxmintjx $ rm -rf /opt/microsoft/

Con esto quedará desinstalado.

Instalar SQL Server 2017 en Linux Mint 18.3 y distribuciones basadas en Ubuntu

Dado que últimamente he estado utilizando SQL Server como manejador de base de datos y ya que ando retomando temas de Linux, decidí hacer este post para recordar cómo instalarlo configurarlo.

Esta instalación de SQL Server 2017 la realicé en Linux Mint 18.3 pero debe de funcionar en distribuciones basadas en Ubuntu.

Recuerden tener por lo menso 20GB de espacio en su disco duro.

Para comenzar nos convertiremos en usuario root.

javoaxian@vboxlinuxmintjx $ sudo su -

Lo siguiente que haremos ser importar las claves GPG del repositorio que contiene los paquetes para la instalación.

root@vboxlinuxmintjx $ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

Ahora agregamos el repositorio de SQL Server en nuestra lista de repositorios.

root@vboxlinuxmintjx $ add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"

Agregado el repositorio, actualizaremos la lista de paquetes:

root@vboxlinuxmintjx $ apt-get update

Ahora vamos a instalar el paquete mssql-server.

root@vboxlinuxmintjx $ apt-get install -y mssql-server

Finalizada la instalación del paquete, ahora ejecutaremos el siguiente comando para instalar el servidor además que es donde se configurará la versión del servidor.

root@vboxlinuxmintjx $ /opt/mssql/bin/mssql-conf setup

Al ejecutar el comando anterior se nos pedirá la edición del servidor que deseamos elegir, en mi caso seleccioné la 2) Developer:

Locale es_MX not supported. Using en_US.
Choose an edition of SQL Server:
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID)
7) Enterprise Core (PAID)
8) I bought a license through a retail sales channel and have a product key to enter.


Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=852748

Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.
Enter your edition(1-8): 2

Se nos pedirá si deseamos aceptar los términos y presionamos “Y”.

The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=855862

The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010

Do you accept the license terms? [Yes/No]: Y

Se nos pedirá el lenguaje del servidor, aquí seleccioné la opción 3 que es Español.

Choose the language for SQL Server:
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Русский
(10) 中文 – 简体
(11) 中文 (繁体)
Enter Option 1-11: 3

Ahora ingresaremos la contraseña del usuario SA.

Enter the SQL Server system administrator password:

Confirmamos la contraseña:

Enter the SQL Server system administrator password:

Con esto se finaliza la instalación del servidor, lo cual nos arroja este mensaje:

Configuring SQL Server...

Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.

Ahora podemos comprobar que el servicio está corriendo ejecutando el siguiente comando:

root@vboxlinuxmintjx $ systemctl status mssql-server

Nos devolverá una salida similar a la siguiente y para salir de ella presionamos la letra “Q”:

● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor pre
Active: active (running) since jue 2018-01-11 23:58:33 CST; 1min 47s ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Main PID: 3994 (sqlservr)
CGroup: /system.slice/mssql-server.service
├─3994 /opt/mssql/bin/sqlservr
└─4014 /opt/mssql/bin/sqlservr


ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [88B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [75B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [108B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [96B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [112B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [100B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [86B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [71B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [159B blob data]
ene 11 23:58:43 vboxlinuxmintjx sqlservr[3994]: [124B blob data]

A continuación lo que tendremos que instalar son las herramientas que nos permitirán conectarnos y manipular las bases de datos.

Empezaremos por importar las clave GPG:

root@vboxlinuxmintjx $ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

Ahora agregamos el repositorio a lista de repositorios.

root@vboxlinuxmintjx $ add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/prod.list)"

Actualizamos la lista de paquetes.

root@vboxlinuxmintjx $ apt-get update

Instalamos las herramientas.

root@vboxlinuxmintjx $ apt-get install -y mssql-tools unixodbc-dev

Se nos preguntará si deseamos aceptar los términos de las licencias de las herramientas mssql-tools y msodbcsql y presionamos sobre <Si>.

jx_post_1010_01 jx_post_1010_02

En mi caso me gusta agregar la ruta de las herramientas en el PATH de todos los usuarios, para ello hay que editar el archivo como usuario root:

/etc/profile

y agregamos las siguientes líneas:

export MSSQLTOOLS=/opt/mssql-tools/bin
export PATH=$PATH:$MSSQLTOOLS

Con esto se finaliza la instalación del servidor.