web-dev-qa-db-fra.com

utf8_ (en | de) code supprimé de php7?

Je suis récemment passé à PHP 7 sur mon serveur de développement, qui a très bien fonctionné jusqu'à présent.

Depuis que j'ai mis à jour PHP 7.0.3-10+deb.sury.org~trusty+1 (plus tôt dans la journée), les fonctions utf8_decode et utf8_encode ne sont plus accessibles. Ils étaient cependant dans les versions précédentes de PHP7. Lorsqu'il est appelé, une erreur fatale est générée.

J'ai lu que ces fonctions sont fournies par l'extension mbstring que j'ai vérifiée avec var_dump(extension_loaded('mbstring')); est chargée.

Comment puis-je faire fonctionner les fonctions ci-dessus à nouveau?

64
paolo

J'ai eu le même problème. Il suffit d'installer le paquet php7.0-xml. Ubuntu 16.04:

Sudo apt-get install php7.0-xml

Edit: Redémarrez Apache2 pour charger le nouveau package.

183
Vladimir Korshunov

Sous Ubuntu, vous avez reçu le message suivant lors de la mise à niveau de PHP7:

php7.0 (7.0.3-6) unstable; urgency=medium

  * Several extensions have been split into separate extension packages:
   - php-dba - Database (dbm-style) Abstraction Layer
   - php-mbstring - Multibyte String
   - php-soap - SOAP
   - php-xml - DOM, SimpleXML, WDDX, XML, XMLReader and XMLWriter
   - php-Zip - Zip
  * The new packages are not installed automatically, so you will need to
    install them by hand, if you use the functions in those modules.
  * Most modules that have been builtin before are now included in
    php7.0-common package and they are enabled by default for your
    convenience.  You can disable unneede modules via phpdismod tool.

 -- Ondřej Surý <[email protected]>  Mon, 22 Feb 2016 12:37:09 +0100

c'est donc l'un de ces paquets qui pose problème. Dans ce cas, c'est php-xml.

Noter la

Les nouveaux packages ne sont pas installés automatiquement

Vous pouvez résoudre ce problème en

Sudo apt-get install php-xml
Sudo Apache2ctl graceful
12
Thomas Weller

Comme la réponse la plus votée n'a pas fonctionné pour moi, j'ai trouvé un autre paquet pour php7 qui (le nom est évident) l'a corrigé pour moi

Sudo apt-get install php7.0-mbstring
4
Guenther Schmitz

Si vous êtes sur CentOS, la commande suivante devrait fonctionner:

yum install php-xml
3
Waqar Alamgir

Dans Ubuntu 16.04 LTS, avec php 5.6, essayez:

Sudo apt-get install php5.6-xml
Sudo service Apache2 restart
3

Les fonctions utf8_decode et utf8_encode sont accessibles en php 7:

function.utf8-encode - manuel - php

En effet, le paquet php-xml manque dans votre installation php.

Si votre serveur exécute Mandrake, entrez "urpmi php-xml".

Si votre serveur exécute EASYPHP sous Windows, cliquez sur le logo EASYPHP pour activer le module php-xml.

Sur Debian ou Ubuntu, essayez:

apt-get install php7.0-xmlrpc
1
DevLoots