Подтвердить что ты не робот

Использование php_fileinfo.dll и finfo_open в Windows PHP 5.3.5

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

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

Ответ 1

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

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

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

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

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

extension=php_fileinfo.dll

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

Ответ 2

Эта строка

extension=php_fileinfo.dll 

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

Ответ 3

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

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