2008-12-29 17 views
7

Necesito habilitar las funciones mcrypt en mi sitio web, excepto que estoy en un host compartido (ejecutando linux) y obviamente no tengo acceso al archivo php.ini. Parece que hay opciones para instalar módulos PEAR, pero una búsqueda me dijo que mcrypt no estaba disponible. ¿Hay alguna forma de que pueda hacer esto, salvo pedir ayuda técnica para ayudarme?Instalación de extensiones PHP en alojamiento compartido


Actualización: Mirando a su alrededor un poco más, parece que podría ser capaz de utilizar la función de dl() para cargar dinámicamente una biblioteca en tiempo de ejecución. Como solo estoy usando las funciones de mcrypt en un solo lugar, probablemente me saldría con la suya ya que el golpe de rendimiento (supongo que hay un golpe) debería ser mínimo. El único problema ahora es cómo obtener el archivo libmcrypt.so?


Otra actualización: He descargado el archivo libmcrypt.tar.bz2 de Sourceforge y corro ./configure, make, y luego se copia el archivo libmcrypt.so.4.4.8 en mi directorio personal (como libmcrypt.so), pero ahora no puedo encuentre dónde colocarlo para que la función dl() lo encuentre.

Respuesta

3

La página MCrypt Sourceforge debería tenerlo http://mcrypt.sourceforge.net/
Para compilar simplemente:

wget http://superb-east.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz 
tar -xzvf libmcrypt-2.5.8.tar.gz 
cd libmcrypt-2.5.8 
./configure 
make 
sudo make install 

EDIT: Se puede hacer referencia a ella con una ruta directa?
¿Qué has probado?

Edit2: Parece que solo puedes cargar moduals desde el directorio de extensiones establecido en php.ini y no puedes anular extensions_dir con ini_set, por lo que tendrás que convencer a tu host para que lo instale o si te permiten tener su propio php.ini (muchos lo hacen generalmente en [nombre de usuario] /php.ini) luego puede establecer el dir_extensiones allí y cargar el modual con eso.

+3

ah bueno esa parte sudo no va a trabajar, ya que estoy en un servidor compartido. – nickf

+0

bien, tendrías que construirlo primero, construiré uno ahora y publicaré un enlace. – UnkwnTech

+0

gracias por la oferta (!), Pero he podido construirlo (ver mi última edición) – nickf

2

Realmente la mejor manera es decirle a su ISP que incluya soporte para mcrypt. Incluso si combina su propia extensión de PHP y la carga con dl(), no hay garantía de que vaya a funcionar después de una actualización de PHP, ya que PHP es a veces muy exigente con el número de versión.

0

dl() tampoco lo ayudará, ya que solo carga las bibliotecas de ciertas rutas, y esas rutas generalmente solo pueden ser escritas por los administradores del sistema por razones de seguridad.

Dudo mucho que haya una forma de usar librerías binarias sin el consentimiento del hoster.

0

PHP en las versiones anteriores a la 5.2.5 permitía utilizar una ruta en la función dl() para poder cargar fácilmente las bibliotecas en un entorno compartido.

Esto cambió por razones de 'seguridad' con 5.2.5 y, por lo que yo sé, su única opción es que el administrador del sistema agregue el módulo al directorio de extensiones.

This issue is described at bugs.PHP.net

Cuestiones relacionadas