Установка расширения PHP mbstring в PHP 5.6 CentOS 6.8

11506
Sadee

Я использую PHP 5.6 на моем сервере centos-release-6-8.el6.centos.12.3.x86_64.

Я получил следующую ошибку от одной из моих функций PHP.

Fatal error: Call to undefined function mb_detect_encoding() 

Итак, я попытался установить расширение mbstring. когда я выполню

sudo yum install php-mbstring 

CLI возвращается

Package php-mbstring-5.6.25-1.el6.remi.x86_64 already installed and latest version Nothing to do 

И я также попытался "sudo yum установить php56-mbstring" Это возвращает

No package php56-mbstring available. Nothing to do 

Но, тем не менее, PHP-функция выдаёт мне эту ошибку, и в phpinfo () нет «mbsting»

Я также добавляю следующую строку в httpd.conf

LoadModule php5_module modules/libphp5.so 

Сервер перезапущен

Обновить:

[~]# php -v PHP 5.6.22 (cli) (built: Jun 13 2016 11:43:51)  Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies [~]# php -m | grep mbstring [~]# php -i | grep mbstring 

Ничто не возвращается к php -m | grep mbstring & php -i | grep mbstring

[~]# rpm -qil php-mbstring Name : php-mbstring Relocations: (not relocatable) Version : 5.6.25 Vendor: Remi Collet Release : 1.el6.remi Build Date: Wed 31 Aug 2016 18:33:05 BST Install Date: Mon 05 Sep 2016 16:26:05 BST Build Host: builder.remirepo.net Group : Development/Languages Source RPM: php-5.6.25-1.el6.remi.src.rpm Size : 2856446 License: PHP and LGPLv2 and BSD and OpenLDAP Packager : http://blog.remirepo.net/ URL : http://www.php.net/ /etc/php-zts.d/20-mbstring.ini /etc/php.d/20-mbstring.ini /usr/lib64/php-zts/modules/mbstring.so /usr/lib64/php/modules/mbstring.so /usr/share/doc/php-mbstring-5.6.25 /usr/share/doc/php-mbstring-5.6.25/libmbfl_LICENSE /usr/share/doc/php-mbstring-5.6.25/oniguruma_COPYING /usr/share/doc/php-mbstring-5.6.25/ucgendat_LICENSE  [~]# rpm -qa 'php*' php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64 php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64 php-mbstring-5.6.25-1.el6.remi.x86_64 php-common-5.6.25-1.el6.remi.x86_64 
0
Было бы полезно [отредактировать] вопрос, чтобы включить вывод `php -v`,` php -m | grep mbstring` и `php -i | grep mbstring`. Anthony Geoghegan 7 лет назад 0
@AnthonyGeoghegan: обновляется с результатами Sadee 7 лет назад 0
Интересно. Вы настраивали стороннее репо для установки PHP 5.6? Я бы также добавил вывод `rpm -qa 'php *'` к вопросу. Возможно, стоит проверить вывод `rpm -qil php-mbstring` на наличие чего-то необычного. Anthony Geoghegan 7 лет назад 0
@AnthonyGeoghegan: я обновил результат. mbsting.so находится в /usr/lib64/php-zts/modules/mbstring.so /usr/lib64/php/modules/mbstring.so Но мой путь расширений: / usr / local / lib / php / extensions / no -debug-non-zts-20131226 А также: я обновил PHP 5.3 до 5.6 Sadee 7 лет назад 0
Вывод `rpm -qa 'php *'`? Anthony Geoghegan 7 лет назад 0
@AnthonyGeoghegan: обновляется с результатом rpm -qa 'php *' Sadee 7 лет назад 0
Я думал, что в вашей системе могут быть установлены разные версии PHP, но это не так. Единственное, о чем я могу подумать, это проверить содержимое `/ etc / php.d / 20-mbstring.ini`, чтобы убедиться, что оно содержит` extension = mbstring.so`. Anthony Geoghegan 7 лет назад 0
@AnthonyGeoghegan: Да, есть "extension = mbstring.so". Но я не смог найти никакой другой версии PHP. Будет ли это проблемой, как я уже говорил, мой путь к расширению "/ usr / local / lib / php / extensions / no-debug-non-zts-20131226". Но нет mbstring.so. Sadee 7 лет назад 0
@AnthonyGeoghegan:: O `rpm -ql php` возвращает 'пакет php не установлен' Sadee 7 лет назад 0
Этот каталог расширений мне не подходит. [править] вопрос о включении вывода `php -i | grep ^ extension_dir`. Я думаю, что это должен быть `/ usr / lib64 / php / modules` (если нет, вы должны найти файл php.ini, в котором он был изменен после проверки того, что выходные данные` ls / usr / lib64 / php / modules` включают `mbstring.so`). Anthony Geoghegan 7 лет назад 0
@AnthonyGeoghegan: Да, это выглядит как ненормальный путь. В любом случае, это путь, который отображается как путь PHP `extension_dir` даже в phpinfo (). И есть mbstring.so в `/ usr / lib64 / php / modules`. Я изменил путь к модулю, перезапустил. Затем дал PDO не найден из моей функции PHP. И все же в phpinfo () нет mbstring. Это похоже на испорченную конфигурацию сервера. Я думаю, что лучше стереть существующий PHP и переустановить как свежий Sadee 7 лет назад 0

1 ответ на вопрос

2
Anthony Geoghegan

Установка расширений / модулей PHP через RPM приведет к установке файлов библиотеки в /usr/lib64/php/modules/. Запуск php -i |grep ^extension_dirпоказывает каталог расширений, который в данный момент настроен.

Каталог расширений /usr/local/lib/php/extensions/no-debug-non-zts-20131226указывает, что на каком-то этапе в прошлом PHP был установлен из исходного кода и что в php.iniнастоящее время используется файл, относящийся к этой исходной установке, а не /etc/php.iniпредоставленный php-commonпакетом.

Чтобы решить эту проблему, вы должны удалить остатки этой исходной установки. К сожалению, Makefile, поставляемый с исходным кодом PHP, не содержит uninstallцели, поэтому вы не можете просто запустить make uninstall. Я бы предложил использовать findкоманду для отслеживания этих файлов по дате их изменения.

Я высоко ценю ваше время и усилия для этого. Однако все эти конфигурации были сделаны через EazyApache. (Я узнал об этом после всех этих попыток). Из-за установки / обновления через EazyApache произошли некоторые необычные изменения (скорее, непосредственно на сервере). Поэтому необходимо следовать EazyApache для установки новых модулей. Ссылка: https://forums.cpanel.net/threads/enable-install-mbstring-module.158165/ Sadee 7 лет назад 0
@Sadee Это больно! Тот факт, что EazyApache был установлен на сервере, был важной информацией. Если бы вы упомянули этот жизненно важный факт в этом вопросе, нам бы не пришлось прикладывать столько усилий для отладки. Разве я не должен получить какую-то репутацию взамен того, что потратил все это время на ваш вопрос? Теперь я знаю, почему вопросы cPanel были забанены у [sf]. :( Anthony Geoghegan 7 лет назад 0

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