Installation der PHP-Erweiterung mbstring in PHP 5.6 CentOS 6.8

0

Ich verwende PHP 5.6 auf meinem Server centos-release-6-8.el6.centos.12.3.x86_64.

Ich habe folgende Fehlermeldung von einer meiner PHP-Funktionen erhalten.

Fatal error: Call to undefined function mb_detect_encoding() 

Also habe ich versucht, die MBstring-Erweiterung zu installieren. wenn ich ausführen

sudo yum install php-mbstring

CLI kehrt zurück

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

Und ich habe auch versucht "sudo yum install php56-mbstring" Das kehrt zurück

No package php56-mbstring available. Nothing to do

Trotzdem gibt mir die PHP-Funktion diesen Fehler und es gibt kein "Mbsting" in phpinfo ().

Die folgende Zeile füge ich auch zu httpd.conf hinzu

LoadModule php5_module modules/libphp5.so

Server neu gestartet

Aktualisieren:

[~]# 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

Nichts kehrt zu php -m | zurück grep mbstring & amp; 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
Sadee
quelle
Es wäre nützlich zu bearbeiten die Frage, die die Ausgabe von enthalten soll php -v . php -m | grep mbstring und php -i | grep mbstring.
Anthony Geoghegan
@AnthonyGeoghegan: Mit den Ergebnissen aktualisiert
Sadee
Interessant. Haben Sie ein Repo eines Drittanbieters konfiguriert, um PHP 5.6 zu installieren? Ich würde auch die Ausgabe von hinzufügen rpm -qa 'php*' zur Frage. Es kann sich auch lohnen, die Ausgabe zu überprüfen rpm -qil php-mbstring für etwas ungewöhnliches.
Anthony Geoghegan
@AnthonyGeoghegan: Ich habe das Ergebnis aktualisiert. Es gibt mbsting.so in /usr/lib64/php-zts/modules/mbstring.so /usr/lib64/php/modules/mbstring.so Aber mein Erweiterungspfad lautet: / usr / local / lib / php / extensions / no -debug-non-zts-20131226 Und außerdem: Ich habe PHP 5.3 auf 5.6 aktualisiert
Sadee
Ausgabe von rpm -qa 'php*'?
Anthony Geoghegan

Antworten:

2

Durch die Installation von PHP-Erweiterungen / -Modulen über RPM werden die Bibliotheksdateien in installiert /usr/lib64/php/modules/. Laufen php -i |grep ^extension_dir Zeigt das Erweiterungsverzeichnis an, das derzeit konfiguriert ist.

Ein Erweiterungsverzeichnis von /usr/local/lib/php/extensions/no-debug-non-zts-20131226 weist darauf hin, dass PHP zu einem früheren Zeitpunkt aus dem Quellcode installiert wurde und dass a php.ini Die Datei, die sich auf diese Quellinstallation bezieht, wird derzeit anstelle der /etc/php.ini bereitgestellt von der php-common Paket.

Um dieses Problem zu beheben, sollten Sie die Reste dieser Quellinstallation entfernen. Leider enthält das mit PHP-Quellcode gelieferte Makefile kein uninstall Ziel, so dass Sie nicht einfach laufen können make uninstall. Ich würde vorschlagen, die find Befehl, um diese Dateien nach ihrem Änderungsdatum zu suchen.

Anthony Geoghegan
quelle
Ich freue mich sehr über Ihre Zeit & amp; Anstrengung dazu. Alle diese Konfigurationen wurden jedoch über EazyApache ausgeführt. (Ich habe das nach all diesen Versuchen erfahren.) Es gibt einige ungewöhnliche Änderungen (eher direkt auf dem Server) aufgrund der Installation / Aktualisierung von EazyApache. Also müssen Sie EazyApache folgen, um neue Module zu installieren. Ref: forums.cpanel.net/threads/enable-install-mbstring-module.158165
Sadee
@Sadee Das tut weh! Die Tatsache, dass EazyApache auf dem Server installiert wurde, war eine wichtige Information. Wenn Sie diese wichtige Tatsache in der Frage erwähnt hätten, hätten wir uns nicht so viel Mühe beim Debuggen geben müssen. Sollte ich nicht dafür einen guten Ruf bekommen, wenn ich die ganze Zeit mit Ihrer Frage verbringe? Jetzt weiß ich, warum cPanel-Fragen verboten wurden Serverfehler . :(
Anthony Geoghegan