12

我在使用 PHP 5.3.5 和 IIS 6 在 Windows Server 2003 上运行的 PHP 脚本中调用 finfo_open 时遇到问题。调用总是返回致命错误:调用未定义的函数 finfo_open() in...

通过一点阅读,我知道 Windows PHP 安装中默认不包含 fileinfo 功能,尽管我没有尝试让它工作。此处评论 #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);
4

3 回答 3

21

您已经接近完成它,只是缺少一些小配置。

请参阅fileinfo 使用和安装说明

Windows 用户必须在 php.ini 中包含捆绑的 php_fileinfo.dll DLL 文件才能启用此扩展。

例如,该 DLL 文件与 PHP 5.3.6 捆绑在一起,您可以在此处找到这些文件:PHP For Windows - Binaries and sources Releases。它应该已经位于extPHP 安装的子目录中。如果没有从上述网站再次下载(选择您的 PHP 版本)并将其放入扩展目录。

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

extension=php_fileinfo.dll

这是在 windows 下激活 PHP 扩展的标准程序。您可以在此处找到有关如何激活 PHP 扩展的更多信息:在 Windows 上安装扩展。如果您在查找 php.ini 文件时遇到问题,请参阅PHP 安装说明 - 在 Windows 系统上安装

于 2011-04-09T15:36:46.400 回答
4

这条线

extension=php_fileinfo.dll 

在我的评论中php.ini,我取消了评论,然后重新启动了我的 xampp 服务器。

于 2014-01-24T21:24:36.357 回答
0

在按照 hakre 的建议进行操作后,FileInfo 扩展仍然没有在我的最后加载,但最终我通过找出我正在修改的 php.ini 文件是错误的文件(位于 \MAMP\bin\php \php7.2.10),而正确的位于 \MAMP\conf\php7.2.10。在正确的ini文件中启用它后,我不得不重新启动php服务器并关闭它。

注意:您可能必须将路径开头的“\MAMP”替换为安装 Web 服务器解决方案堆栈软件(例如 MAMP、WAMP、XAMP 或其他)的路径。因为我使用的是 MAMP,所以它出现在我的文件路径中

于 2019-01-25T12:05:13.080 回答