2011-02-24 19 views
12

Tengo problemas para llamar a finfo_open en un script PHP que se ejecuta en Windows Server 2003 con PHP 5.3.5 & IIS 6. La llamada siempre devuelve un error fatal: llamada a indefinido función finfo_open() en ...Uso de php_fileinfo.dll y finfo_open en Windows PHP 5.3.5

A través de una pequeña lectura sé que la funcionalidad fileinfo no está incluida por defecto en la instalación de Windows PHP, aunque nada de lo que intento funciona. Las instrucciones en el comentario # 3 aquí: http://www.php.net/manual/en/fileinfo.installation.php no ayudaron, y esa es la explicación más oficial que puedo encontrar. Hay mucha información sobre la necesidad de dll mime_magic en la web, pero parece que ya no es necesario a partir de 5.3. Además, he leído en http://pecl.php.net/package/Fileinfo que "A partir de PHP 5.3.0 esta extensión está habilitada por defecto". ¿Que esta pasando?

Este problema se encuentra en un servidor de prueba. En mi máquina local tengo xampp y PHP 5.3.1 y la llamada funciona bien, así que también intenté copiar php_fileinfo.dll de local a php \ ext en la prueba, pero esto tampoco hizo ninguna diferencia (sé que las versiones son diferente, pero he leído que el 5.3 es el bit importante).

¡Cualquier consejo sobre esto sería muy apreciado!

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $filepath); 

Respuesta

18

Ya estás cerca de lograrlo, solo falta una pequeña configuración en tu extremo.

Por favor, vea el fileinfo usage and installation instructions:

Windows users must include the bundled php_fileinfo.dll DLL file in php.ini to enable this extension.

Ese archivo DLL se bundeled con PHP 5.3.6, por ejemplo, se pueden encontrar los archivos aquí: PHP For Windows - Binaries and sources Releases. Debería estar ya ubicado en el subdirectorio ext de su instalación de PHP. Si no lo descarga nuevamente de dicho sitio web (elija su versión de PHP) y colóquelo en el directorio de extensión.

es necesario agregar la siguiente línea a su php.ini a continuación para activarlo:

extension=php_fileinfo.dll 

Ese es el procedimiento estándar para activar una extensión de PHP en Windows. Puede encontrar más información sobre cómo activar una extensión de PHP aquí: Installation of extensions on Windows. Si tiene problemas para encontrar el archivo php.ini, consulte el PHP installation instructions - Installation on Windows systems.

+0

Gracias por su entrada hakre pero esto es exactamente lo que he estado intentando. El enlace que proporcionó 'uso de la información de archivo e instrucciones de instalación' es el mismo que identifiqué en mi primera publicación. Permití la extensión en php.ini y primero reinicié IIS, luego todo el servidor, sin ningún cambio. Ahora mismo estoy trabajando en el problema al verificar el tipo de mimo de un archivo al cargarlo y almacenarlo en mi base de datos, y luego usar esto para crear el filestream en una descarga. – tomfumb

+1

@ user519575 - ¿Cuál es su versión de PHP? Necesitaba configurar el módulo fileinfo ayer en un cuadro de Windows y funcionó de esa manera (mientras que anteriormente faltaba). Estoy usando PHP 5.3.6. ¿Qué interfaz de servidor estás usando? ¿Estás editando el PHP.ini correcto? ¿Puede enumerar los módulos cargados en el script php y es fileinfo parte de esa lista? – hakre

+0

¿Terminaste arreglando esto? finfo está en phpinfo() y todo menos las funciones todavía están regresando como indefinido? IIS7 – zanderwar

4

Esta línea

extension=php_fileinfo.dll 

se ha comentado en mi php.ini así que no comentada y luego reiniciar mi servidor XAMPP.