1
Cargar una Extensión de PHP Dinámicamente

Complementando un artículo que escribí anteriormente Compilar Extensión “mssql.so” para PHP 5, vamos a ver como se cargan las extensiones de forma dinámica.

Una vez que compilamos la extensión de PHP podemos realizar dos
acciones:

  1. Estáticamente: Incluir la Extensión en el archivo “php.ini” para que esta se cargue automáticamente y sea accesible para todos los usuarios que usen el mismo servidor. Este procedimiento esta explicado en el artículo anterior.
  2. Dinámicamente: Incluir la extensión en tiempo de ejecución en nuestra aplicación, esto quiere decir que solo estará accesible para quien esté programando la aplicación y no para los demás usuarios, lo cual es bastante interesante, sobre todo si no queremos que otros usuarios tengan tantas extensiones a su disposición.

Para lograr cargar la extensión en tiempo de ejecución solo es necesario que después de haber compilado la extensión, se copia a algún directorio accesible para nuestra aplicación por ejemplo “extensiones”.

Ya desde el desarrollo de nuestra aplicación solo es necesario llamar su carga con el siguiente código:

<?php
if (!extension_loaded('mssql')) {
  $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
  dl("extensiones/" . $prefix . 'mssql.' . PHP_SHLIB_SUFFIX);
}
?>

La segunda linea revisa si ya se encuentra cargada la extensión, si es negativo pasa a la tercera linea, donde se revisa el sufijo del sistema, esto quiere decir que si esta en Linux, la extensión es “.so” y si esta sobre Windows, la extensión es “.dll” y además en Windows las exenciones tienen un prefijo “php_” por lo que se debe agregar al nombre de la extensión. Por ejemplo:

Linux: mssql.so
Windows: php_mssql.dll

Ya en la cuarta linea se realiza la carga con la función “dl“, en la cual se debe de ubicar la dirección de la extensión.

Podemos intentar realizar la conexión a la base de datos de la siguiente forma:

$conn = mssql_connect("192.168.0.1:1433", "user", "pass");
mssql_select_db("tabla", $conn);

En la parte del Host, se puede usar “IP:1433” o “midominio.com:1433”.

Otra cosa a notar es la separación del puerto, en windows será necesario separarlo por “coma” (“192.168.0.1,1433“), y si es un PHP en linux será necesario que se separe por “dos puntos” (“192.168.0.1:1433“).

Para poder conectar correctamente a MS SQL Server dejo algunas recomendaciones que considero pertienetes y que me ayudaron a conectar remotamente.

  • Que SQL Server soporte autenticación por nombre de usuario y contraseña, el cual se puede verificar en “Propiedades” del servicio, pestaña “Seguridad” y en autenticación debe estar activada “SQL y Windows”
  • Revisar que esté activado el servicio por red, el cual se puede verificar en “Propiedades” del servicio, en la pestaña “General”, botón “Configuración de Red”. En protocolos autorizados debería estar “TCP/IP”, con el puerto “1433”
  • Si el Servidor de la DB tiene algun tipo de firewall interno por software, se deberá habilitar que acepte conexiones al puerto 1433
  • Si existe un ruteador en la red del servidor, se deberá dirigir las conexiones TCP del puerto 1433 desde quien tiene la IP homologada de internet hacia la IP interna del servidor.



Comentarios


Patrocinadores

Publicidad