2011-02-24 66 views
12

我在使用PHP 5.3.5在Windows Server 2003上运行的PHP脚本中调用finfo_open时遇到问题& IIS 6.调用始终返回致命错误:调用undefined函数finfo_open()在...在Windows中使用php_fileinfo.dll和finfo_open PHP 5.3.5

通过一点点阅读我知道文件信息的功能是不包括在默认情况下的Windows PHP安装,虽然没有我尝试得到它的工作。这里的注释#3中的说明:http://www.php.net/manual/en/fileinfo.installation.php没有帮助,这是我能找到的最正式的解释。有很多关于在网络上需要mime_magic dll的信息,但似乎从5.3开始不再需要它。此外,我已阅读http://pecl.php.net/package/Fileinfo,“从PHP 5.3.0开始,此扩展默认启用”。这是怎么回事?

此问题出现在测试服务器上。在我的本地机器上,我有xampp和PHP 5.3.1,并且调用工作正常,所以我也尝试将php_fileinfo.dll从本地复制到php \ ext进行测试,但这也没有任何区别(我知道版本是不同,但我读到5.3是重要的位)。

任何意见,将不胜感激!

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

回答

18

你已经接近完成了,只有一些小的配置丢失了。

请参阅fileinfo usage and installation instructions

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

该DLL文件bundeled用PHP 5.3.6例如,你可以在这里找到这些文件:PHP For Windows - Binaries and sources Releases。它应该已经位于PHP安装的ext子目录中。如果不从该网站下载(选择您的PHP版本)并将其放入扩展目录。

您需要添加以下行的php.ini然后将其激活:

extension=php_fileinfo.dll 

这是标准程序来激活Windows下的PHP扩展。你可以在这里找到更多关于如何激活PHP扩展的信息:Installation of extensions on Windows。如果您在查找php.ini文件时遇到问题,请参阅PHP installation instructions - Installation on Windows systems

+0

感谢您的输入,但这正是我一直在尝试的。您提供的'fileinfo使用和安装说明'链接与我在第一篇文章中标识的链接相同。我在php.ini中启用了扩展,并首先重新启动IIS,然后整个服务器,没有任何改变。 现在我只是通过检查上传文件的MIME类型并将其存储在我的数据库中,然后使用它在下载时创建文件流来解决此问题。 – tomfumb 2011-04-10 16:37:06

+1

@ user519575 - 你的PHP版本是什么?我需要昨天在一个窗口框中设置fileinfo模块,并且它以这种方式工作(虽然它以前缺失)。我使用PHP 5.3.6。你使用哪个服务器接口?你在编辑正确的PHP.ini吗?你能列出加载的模块在php脚本中,并且是该列表的fileinfo部分吗? – hakre 2011-04-11 14:00:36

+0

你最终是否得到了修正。 finfo是在phpinfo()和除了函数之外的所有东西仍然返回未定义? IIS7 – zanderwar 2015-10-28 04:18:55

4

此行

extension=php_fileinfo.dll 

在我php.ini有人评论,所以我的注释去掉,然后重新启动我的XAMPP服务器。

相关问题