Задать вопрос
@andrei2019

Можно задать пару вопросов по включению функций чтения свойств файлов?

На Ubuntu 18.04 все работало (рнр 7.2.7): $info = mime_content_type($file->getPathname();

Перенес программу на OpenSUSE 15 (PHP 7.2.5) и началось...(весь день убил).
Call to undefined function mime_content_type() - Как ее включить - ЭТО ПЕРВЫЙ ВОПРОС.

Хотя в phpinfo() показывает, что есть mod_mime и mod_mime_magic.
(пробовал их дергать через aenmod - без mod_mime не запускается апачи, значит меня слушается) - не понимаю, почему же undefined (инет переполнен подобными вопросьбами).

Ладно.. в убунту в phpinfo() есть fileinfo, а в опенсусе нет! (видимо какой болван скомпилировал с ключом БЭЗ поддержки fileinfo? А как же смотреть свойства файла то?!)

Так и не понял какая из этих функций устарела, а какая должна входить в дистрибутив:

qaru.site/questions/485889/mimecontenttype-functio...

Вот на эту ссылку все посылают, типа здесь написано КАК инсталлировать:

php.net/manual/ru/fileinfo.installation.php

Видимо убрали описание инсталляции, раз входит в пакет.

Пытался поставить fileinfo - не выходит. Как ее включить\поставить - ЭТО ВТОРОЙ ВОПРОС.

(инет переполнен подобными просьбами, но виндоусятники отвечают: Для пользователей винды откройте дллку. А насчет линукса промалчивают, ибо нет такой системы. Но я и без них знаю, что extension=fileinfo.so нужно раскомментить в рнр.ини (и это не поможет, ибо нужно установить пакет, но тогда этот коммент не повлияет - проверял уже на убунте, например на mb_string))

#pecl install fileinfo
WARNING: "pear/Fileinfo" is deprecated in favor of "channel://php-src/ext/fileinfo/in php sources"
я так понял что это нечто устаревшее...
WARNING: channel "pear.php.net" has updated its protocols, use "pecl channel-update pear.php.net" to update
downloading Fileinfo-1.0.4.tar ...
Starting to download Fileinfo-1.0.4.tar (24,064 bytes)
........done: 24,064 bytes
3 source files, building
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
ERROR: `phpize' failed

Ладно, пытаюсь отдельно найти:
# zypper in fileinfo
Loading repository data...
Reading installed packages...
'fileinfo' not found in package names. Trying capabilities.
No provider of 'fileinfo' found. (ПОЧЕМУ?! Fileinfo это плохо? Это устарело? Это не нужно?)

#PHP --version
PHP Version => 7.2.5
System => Linux opensuse 4.12.14-lp150.11-default #1 SMP Fri May 11 08:28:30 UTC 2018 (a9fee09) x86_64
Additional .ini files parsed => /etc/php7/conf.d/ctype.ini,
/etc/php7/conf.d/dom.ini,
/etc/php7/conf.d/iconv.ini,
/etc/php7/conf.d/json.ini,
/etc/php7/conf.d/mbstring.ini,
/etc/php7/conf.d/mysqli.ini,
/etc/php7/conf.d/pdo.ini,
/etc/php7/conf.d/pdo_mysql.ini,
/etc/php7/conf.d/pdo_sqlite.ini,
/etc/php7/conf.d/sqlite3.ini,
/etc/php7/conf.d/tokenizer.ini,
/etc/php7/conf.d/xmlreader.ini,
/etc/php7/conf.d/xmlwriter.ini,
/etc/php7/conf.d/zlib.ini

Тут рекомендуют скачать: ruphp.com/ext-fileinfo-x4.html
# wget pecl.php.net/get/Fileinfo-1.0.4.tgz
Скачал!
#tar -zxf Fileinfo-1.0.4.tgz
#cd Fileinfo-1.0.4
# phpize
#./configure
checking for magic files in default path... not found
configure: error: Please reinstall the libmagic distribution
#zypper in libmagic
Loading repository data...
Reading installed packages...
'libmagic' not found
#zypper in file-devel (это было невозможно догадаться! ушли еще часы поиска по говносайтам)
#./configure
#make
..Fileinfo-1.0.4/fileinfo.c:159:32: error: unknown type name ‘zend_rsrc_list_entry’; did you mean ‘zend_rsrc_list_dtors_entry’?
и еще сто ошибок, как и всегда в линуксах, кроме пожалуй убунту.

прочитал десятки советов типа:
https://nagg.ru/2012/04/resheno-php-warning-finfo_...

В общем то можно наверное снести дистрибутив рнр и установить самому, но у заказчика нет инета и закрыты юсб, так что я пока на своем компе пытаю этот дистр.
  • Вопрос задан
  • 403 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
DevMan
@DevMan
https://pkgs.org/download/php7-fileinfo расширение лежит в репо в скомпилированном виде.
надо лишь подключить репо (если оно еще не подключено) и поставить через зипер, разрулив зависимости если они есть.

Я ненавижу людей, кто придумал капчу с дорожными знаками и витринами и тех дизайнеров, кто ее использует, хотя сайт совершенно не нуждается в такой защите. Когда нибудь я найду их (обоих) и буду УБИВАТЬ МЕДЛЕННО, как это делают маньяки в фильмах, которые я не смотрю.
сайт совершенно нуждается в такой защите, поэтому она на нем и недавно появилась.
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
No provider of 'fileinfo' found. (ПОЧЕМУ?! Fileinfo это плохо? Это устарело? Это не нужно?)

Если этот zypper такой же, как и apt, aptitude или yum, то подозреваю потому что не fileinfo, а php-fileinfo или php7.2-fileinfo. Зависит от поставщика.

и еще сто ошибок, как и всегда в линуксах, кроме пожалуй убунту.

Это будет на любой версии. Можно было обратить внимание, что 1.0.4 https://pecl.php.net/package/Fileinfo - это версия 2006го года, тогда 7ки не то что бы в планах не было, но и 5ка была раритетом. После этого кажется довольно очевидным, что апи сильно поменялось и расширение, разработанное для древней версии просто не собирается для новой.

Само расширение нынче является частью стандартной поставки и вхреначено внутрь ядра. Если же нет, то ставится оно либо через менеджер зависимостей, либо можно попробовать руками его включить, прописав "extension=fileinfo", хотя я не уверен что это вообще сработает (такой трюк только на винде работает, ибо там все расширения сразу прилетают и надо их только включить).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы