Использование 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);
Ответы
Ответ 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, поэтому он присутствует в моем пути к файлу