2

将 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

我哪里错了?

4

4 回答 4

2

遇到与 Mike Purcell相同的错误消息(“Warning: string extension w' invalid in 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-ally :-),整个 mime 类型的检测系统又开始工作了。

于 2013-03-01T00:49:00.970 回答
1

这可能与您的确切问题无关,但它确实解决了我遇到的问题,该问题导致了非常相似的错误消息:“警告:字符串扩展名 w' 在命令中无效”。

对于我们来说,我们有一个异构设置,其中一些服务器仍在运行 php 5.2,而另一些服务器仍在运行 php 5.3。在 5.2 盒子上,魔术文件位于 . /usr/share/file/magic,但在 5.3 盒子上,文件位于默认路径/usr/share/misc/magic. 显然有人试图通过符号链接 5.2 路径来协调这些路径差异,因此代码库可能与 php 版本无关。但是根据 PHP 网站上发布的有关魔术文件符号链接的一些评论,这将导致意外行为,这当然是导致上述错误消息的原因。

因此,请确保您传递的路径是实际的魔术文件,而不是符号链接,看看是否能解决您的问题。

于 2012-09-18T22:37:08.983 回答
1

根据您的 PHP 版本,魔术格式可能会更新。这记录在http://php.net/manual/en/function.finfo-open.php的注释中

运行 php -v 查看你的版本

在我们的源代码树中指向一个较旧的魔术文件时,我遇到了同样的错误,并在从我当前的 linux 发行版中指向一个较新的魔术文件时解决了它

于 2012-12-18T20:07:48.403 回答
0

我在 Laravel 中遇到了这个错误(当然,减去 Zend FR)。在带有 IIS 的 Windows 机器上运行 PHP 5.3.21。

在网上找到的信息很少,我几乎要放弃了。当我按照 PHP.net 上的评论中的说明进行操作时,它最初是有效的,基本上是将 fileinfo.dll 添加到您的 PHP 安装中,并下载相关的魔法文件并将环境变量指向它们。

最初有些混乱,直到我意识到我实际上并没有 php_fileinfo.dll,所以除了将它添加到 php.ini 文件之外,我还必须下载文件本身并将其添加到我的ext目录中。

现在真正让我陷入困境的是它最初是有效的。第二天就没有了。长话短说,它不需要环境变量 MAGIC。这让我陷入困境的原因是因为我已经尝试了所有可能的场景,但是一旦设置了环境变量,它就已经设置好了。而且我必须在删除 Windows 服务器后重新启动它,才能取消它。一旦我这样做了,它就完美地工作了。

于 2014-05-09T15:10:45.950 回答