2012-07-24 62 views
2

我有更新的Zend FR至1.11Zend的FR FINFO錯誤警告:字符串擴展'B '無效

mimetype文件檢查將生成後的問題:

警告:字符串擴展'B' 無效

它看起來問題原因

$finfo = finfo_open(FILEINFO_MIME_TYPE, $file); 

我已經創建了簡單的測試案例

在Zend_Validate_File_MimeType字符串
$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. 

我的OS:Kbuntu 10.10

我在哪裏錯了?

+0

嗯,得到相同的錯誤,除了'W'。如果我找到解決方案,我會發布它。 – 2012-09-17 17:13:56

+1

嘗試從api調用中去除finfo_open的路徑(第2個參數),並查看是否解決了您的問題,它爲我做了。 – 2012-09-17 19:59:26

回答

1

這可能與您的EXACT問題無關,但它解決了我遇到的問題,導致出現非常類似的錯誤消息:「警告:字符串擴展w在命令中無效」。

對於我們來說,我們有一個異構的設置,其中一些服務器仍在運行php 5.2和其他運行php 5.3的服務器。在5.2盒子中,魔術文件駐留在/usr/share/file/magic中,但在5.3盒子上,文件駐留在默認路徑/usr/share/misc/magic中。顯然有人試圖通過符合5.2路徑來調和這些路徑差異,所以代碼庫可能是PHP版本不可知的。但根據PHP網站上發佈的關於symlinks to the magic file的一些評論,它會導致意外的行爲,這當然會導致上述錯誤信息。

因此,請確保您傳遞的路徑是實際的魔術文件,而不是符號鏈接,並查看是否可以解決您的問題。

+0

今天早上得到了這個錯誤信息,但這並沒有最終解決它。如果有人遇到相同的字符串擴展名'w'錯誤,我們很樂意聽到 – acorncom 2013-02-28 19:11:06

+0

@acorncom:它曾經是一個符號鏈接嗎?如果是這樣,你可能想嘗試重新啓動httpd只是爲了覆蓋所有的基地。 – 2013-02-28 21:06:07

+0

@acorncom:另外,檢查我在OP中的評論,這是另一種選擇。 – 2013-02-28 21:06:47

1

根據您的PHP版本,魔術格式可能會更新。這是在一份報告中在http://php.net/manual/en/function.finfo-open.php

運行PHP -v指向一個新的魔術時,記錄在案,以查看版本

指向我們的源代碼樹的舊魔術文件時,我得到了同樣的錯誤,並解決它文件從我當前的Linux發行版

2

作爲邁克珀塞爾進入相同的錯誤消息(「警告:字符串擴展w無效在命令」),但修復它是不同的。

在我們的服務器上,我們有一個/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類型檢測系統開始工作了。

0

我在Laravel(當然不包括Zend FR)有這個錯誤。在Windows上使用IIS運行PHP 5.3.21。

在網上找到很少的信息我已經接近放棄了。它最初的工作原理是當我按照PHP.net的註釋中的說明操作時,它基本上是將fileinfo.dll添加到您的PHP安裝中,並且還下載相關的魔術文件並將環境變量指向它們。

直到我意識到我實際上並沒有php_fileinfo.dll,以及將它添加到php.ini文件,我不得不下載文件本身並將其添加到我的分機目錄。

現在究竟是什麼讓我卡住了,最初是否起作用。第二天它沒有。長話短說,它不需要環境變量MAGIC。這讓我陷入困境的原因是因爲我試過了所有可能的情況,但是一旦環境變量設置好了,它就已經設置好了。我必須在刪除它之後重新啓動Windows服務器,以解除它。一旦我做到了這一點,它完美運作。