将Zend FR更新为1.11
后出现问题Mimetype文件检查生成:
警告:字符串扩展名“B”无效
看起来像Zend_Validate_File_MimeType中的字符串问题的原因
$finfo = finfo_open(FILEINFO_MIME_TYPE, $file);
我创建了简单的测试用例
$finfo = finfo_open(FILEINFO_MIME_TYPE, '/usr/share/misc/magic');
echo finfo_file($finfo, PUBLIC_HTML_PATH . '/images/missing.png');
finfo_close($finfo);
我得到同样的错误:(
finfo_open(FILEINFO_MIME_TYPE, '/usr/share/misc/magic'); //generates: Warning: string extension `B' invalid.
我的操作系统:Kbuntu 10.10
我哪里错了?
答案 0 :(得分:2)
与Mike Purcell一样,输入相同的错误消息(“警告:字符串扩展名w'在Command中无效),但修复程序不同。
在我们的服务器上,我们有一个/usr/share/misc/magic
和一个/usr/share/misc/magic.mgc
文件。 magic.mgc
文件是从magic
文件编译的,但是PHP仍然不喜欢直接与/usr/share/misc/magic
文件交谈(我们已经转移到该文件作为调试的一部分magic.mgc
文件需要更新。
我们的修复方法是将putenv
行更改回magic.mgc
文件:
putenv('MAGIC=/usr/share/misc/magic.mgc');
然后,magic
- 盟友:-),整个哑剧型检测系统再次开始工作。
答案 1 :(得分:1)
根据您的PHP版本,可能会更新魔术格式。这在http://php.net/manual/en/function.finfo-open.php
的说明中有记录运行php -v查看您的版本
我在源代码树中指向一个较旧的魔术文件时遇到了同样的错误,当我从当前的Linux发行版指向一个较新的魔术文件时解决了它
答案 2 :(得分:0)
我在Laravel中遇到此错误(当然是减去Zend FR)。在带有IIS的Windows机器上运行PHP 5.3.21。
在网上发现很少的信息我几乎放弃了。它最初是在我按照PHP.net上的注释中的说明工作的,这些注释基本上是将fileinfo.dll添加到PHP安装中,并且还下载相关的魔术文件并将环境变量指向它们。
在我意识到我实际上没有php_fileinfo.dll之前有一些初步的混淆,所以除了将它添加到php.ini文件之外,我还必须自己下载文件并将其添加到我的 ext 目录。
现在真正让我感到困惑的是,它最初起作用了。第二天它没有。简而言之,它不需要环境变量MAGIC。这让我卡住的原因是因为我已经尝试了所有可能的场景,但是一旦设置了环境变量,它就已经设置好了。删除后我不得不重启Windows服务器,取消设置。一旦我这样做,它完美地工作。