Foros del Web » Programando para Internet » PHP » Configuración PHP »

¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Estas en el tema de ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac? en el foro de Configuración PHP en Foros del Web. Hola... estoy tratando de integrar la api de Windows Live para poder iniciar sesión, y la misma hace uso de la siguiente función: hash_hmac() Pero ...
  #1 (permalink)  
Antiguo 18/04/2009, 23:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 14
Antigüedad: 17 años, 9 meses
Puntos: 5
Pregunta ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Hola... estoy tratando de integrar la api de Windows Live para poder iniciar sesión, y la misma hace uso de la siguiente función:

hash_hmac()

Pero el php me está tirando el error Call to undefined function hash_hmac()... se que esa función está a partir de PHP 5 y yo tengo la versión 5.1.2, por lo que creo que debería estar integrada por defecto... estuve revisando las extensiones y creo que puede llegar a ser extension=php_mhash.dll aunque no estoy seguro.

Mi pregunta es ¿Cómo puedo habilitar esa extensión sin modificar el php.ini a mano?

Intenté con el ini_set pero hasta ahora creo que no logré habilitarla, supongo que se debe a que es una extensión y no una configuración, la verdad no sé.

Bueno, eso quería saber, como habilitar una extensión desde PHP o en su defecto como hacer funcionar la función hash_hmac().

Espero respuestas.

Desde ya, muchas gracias!
  #2 (permalink)  
Antiguo 19/04/2009, 04:52
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 45
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Hola jabmaster

A parte de poderla modificar a mano, la otra opción es definirte una función de apertura y escritura de archivos con fopen() y fwrite() y localizar la cadena ;extension=php_mhash.dll y sustituirla por extension=php_mhash.dll, sin el ;.

Un saludo
  #3 (permalink)  
Antiguo 19/04/2009, 05:29
 
Fecha de Ingreso: marzo-2007
Mensajes: 14
Antigüedad: 17 años, 9 meses
Puntos: 5
Busqueda Respuesta: ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Hola josofol, gracias por responder y por la sugerencia, la probaré... igualmente he comprobado que php_mhash.dll no tiene nada que ver con hash_hmac, tiene que ver con mhash, por ahora lo que estoy haciendo es tratar de suplantar hash_hmac con mhash de esta forma:

Código Original:
Código PHP:
return hash_hmac("sha256"$token$signkeytrue); 
Reemplazo:
Código PHP:
return mhash(MHASH_SHA256,$signkey.$token); 
No se si estoy en lo correcto, pero me parece que me voy acercando.

Igualmente no entiendo porque el servidor no me toma la función hash_hmac... sigo esperando si alguien sabe como se activa/instala o qué.

Gracias!!

Saludos
  #4 (permalink)  
Antiguo 19/04/2009, 08:04
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 45
Antigüedad: 16 años, 6 meses
Puntos: 1
Hola de nuevo

He comprobado lo que dices y efectivamente hash_hmac() existe desde PHP 5 >= 5.1.2:

http://es.php.net/manual/es/function.hash-hmac.php

Por tanto, asegurate de la versión de php que estás utilizando ya que viene por defecto, no necesitas ninguna extensión. Prueba con phpinfo() y si es php 5.1.2 como comentas no sé porque no te funciona. Fijate en la sintáxis de la función y mira el link no vaya a ser que falte algún argumento:

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output= false ] )

Si puedes también comentame, después de hacer un phpinfo() si tienes o no enable la opción hash

Un saludo y comentame

Hola de nuevo

He comprobado lo que dices y efectivamente hash_hmac() existe desde PHP 5 >= 5.1.2:

http://es.php.net/manual/es/function.hash-hmac.php

Por tanto, asegurate de la versión de php que estás utilizando ya que viene por defecto, no necesitas ninguna extensión. Prueba con phpinfo() y si es php 5.1.2 como comentas no sé porque no te funciona. Fijate en la sintáxis de la función y mira el link no vaya a ser que falte algún argumento:

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output= false ] )

Si puedes también comentame, después de hacer un phpinfo() si tienes o no enable la opción hash

Un saludo y comentame

Ah!

Y en este link tiene todo el paquete hash, pero es para versiones anteriores a php5:

http://pecl.php.net/package/hash

Un saludo y espero novedades

Última edición por GatorV; 19/04/2009 a las 21:24
  #5 (permalink)  
Antiguo 19/04/2009, 12:01
 
Fecha de Ingreso: marzo-2007
Mensajes: 14
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Bueno, he estadio lidiando con esto... es algo raro.

En mi servidor local de prueba funciona bien (Windows + Apache), el problema se da cuando lo subo al hosting (Windows + IIS). En ese mismo hosting tengo otra cuenta bajo Linux + Apache y funciona sin problemas, asi que se ve que el problema lo tiene el ISS no sé.

Respecto al phpinfo(), este es el resultado:

Código PHPInfo:
Ver original
  1. [B]PHP Version 5.1.2
  2. [/B]
  3. System  Windows NT DTC008 5.2 build 3790
  4.  
  5. [B]mcrypt[/B]
  6. mcrypt support  enabled
  7. Version     2.5.7
  8. Api No  20021217
  9. Supported ciphers   cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes
  10. Supported modes     cbc cfb ctr ecb ncfb nofb ofb stream
  11.  
  12. Directive   Local Value Master Value
  13. mcrypt.algorithms_dir   no value    no value
  14. mcrypt.modes_dir    no value    no value
  15. [B]
  16. mhash[/B]
  17. MHASH support   Enabled
  18. MHASH API Version   20020524

Definitivamente es PHP 5.1.2 y a la función no le falta ningún parametro, ya que el error que devuelve es Call to undefined function hash_hmac()...

Podría probar con el paquete ese que mencionas, pero no sé como instalarlo ¿Se descomprime en la raíz o qué?

josofol, de nuevo, muchas gracias por la ayuda!

Saludos!
  #6 (permalink)  
Antiguo 19/04/2009, 14:23
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 45
Antigüedad: 16 años, 6 meses
Puntos: 1
Hola de nuevo

El paquete lo tienes que compilar ya que está en c y lo que hace es generarte, creo, una DLL. Sin embargo, es para versiones anteriores a php 5 y no sé cual seria su comportamiento. No obstante, lo único que se me ocurre ya es que comentes esto con el soporte técnico de tu hosting ya que según el phpinfo() lo tienes habilitado y debería funcionarte.

Un saludo

Ah! Y además de esto, también puedes comprobar si existe o no la función aunque es reiterativo pero es otra opción:

<?php
if (function_exists('hash_hmac')) {
echo "Las función hash_hmac está disponible.<br />\n";
} else {
echo "Las función hash_hmac no está disponible.<br />\n";
}
?>

Tienes otras opciones en este link:

http://es.php.net/manual/es/function...ion-exists.php

Última edición por GatorV; 19/04/2009 a las 21:24
  #7 (permalink)  
Antiguo 19/04/2009, 21:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ¿Cómo habilitar extensión desde PHP? + ¿Función hash_hmac?

Tema trasladado desde PHP
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:05.