Использование php_fileinfo.dll и finfo_open в Windows PHP 5.3.5 - PullRequest
12 голосов
/ 24 февраля 2011

У меня проблемы с вызовом finfo_open в сценарии PHP, работающем на Windows Server 2003 с PHP 5.3.5 и IIS 6. Вызов всегда возвращает фатальную ошибку: вызов неопределенной функции finfo_open () в ...

Из небольшого прочтения я узнал, что функция fileinfo по умолчанию не включена в установку Windows PHP, хотя все, что я пытаюсь сделать, работает. Инструкции в комментарии № 3 здесь: http://www.php.net/manual/en/fileinfo.installation.php не помогли, и это самое официальное объяснение, которое я могу найти. В интернете много информации о необходимости использования библиотеки mime_magic, но, похоже, с 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);

Ответы [ 3 ]

20 голосов
/ 09 апреля 2011

Вы уже близки к тому, чтобы сделать это, на вашем конце не хватает только небольшой конфигурации.

Пожалуйста, ознакомьтесь с инструкциями по использованию и установке fileinfo :

Пользователи Windows должны включить файл DLL php_fileinfo.dll в комплекте в php.ini, чтобы включить это расширение.

Этот файл DLL связан с PHP 5.3.6, например, вы можете найти файлы здесь: PHP для Windows - Двоичные файлы и исходные коды Выпуски . Он должен уже находиться в подкаталоге ext вашей установки PHP. Если нет, загрузите его снова с указанного веб-сайта (выберите версию PHP) и поместите в каталог расширений.

Вам необходимо добавить следующую строку в php.ini, чтобы активировать ее:

extension=php_fileinfo.dll

Это стандартная процедура для активации расширения PHP под Windows. Вы можете найти больше информации о том, как активировать расширение PHP здесь: Установка расширений в Windows . Если у вас возникли проблемы с поиском файла php.ini, обратитесь к инструкциям по установке PHP - Установка в системах Windows .

4 голосов
/ 25 января 2014

Эта строка

extension=php_fileinfo.dll 

было прокомментировано в моем php.ini, поэтому я раскомментировал его и затем перезапустил свой сервер xampp.

0 голосов
/ 25 января 2019

После выполнения того, что предложил Хакре, расширение FileInfo по-прежнему не загружалось с моей стороны, но затем, в конце концов, я решил его, выяснив, что файл php.ini, который я изменял, был неправильным (он был расположен в \ MAMP \bin \ php \ php7.2.10), в то время как правильный был расположен в \ MAMP \ conf \ php7.2.10.После включения его в правильном INI-файле мне пришлось перезапустить php-сервер, и он отключился.

ПРИМЕЧАНИЕ. Возможно, вам придется заменить «\ MAMP» в начале пути на путь, по которому ваш веб-установка программного обеспечения стека решений (например, MAMP, WAMP, XAMP или другое) установлено.Так как я использовал MAMP, поэтому он присутствует в моем пути к файлу

...