utf8_(fr|de)code retiré de php7?
J'ai récemment passé à PHP 7 sur mon serveur de développement, qui a a très bien fonctionné jusqu'à maintenant.
Depuis que j'ai mis à jour pour PHP 7.0.3-10+deb.sury.org~trusty+1
(plus tôt aujourd'hui), le utf8_decode
et utf8_encode
les fonctions ne sont plus accessibles. Ils étaient, cependant, dans les versions précédentes de PHP7. Lorsqu'elle est appelée, une erreur fatale est générée.
J'ai lu que ces fonctions sont assurées par le mbstring
extension, que j'ai vérifié avec var_dump(extension_loaded('mbstring'));
est chargé.
Comment puis-je obtenir les fonctions ci-dessus pour la retrouver?
mbstring
ne fournit pas cette fonction. Curieusement, elle est répertoriée dans XML Parser Fonctions. Peut-être que vous aimeriez développer un peu sur le message d'erreur? Le test rapide sur mon (personnalisé) PHP7 montre qu'il est "toujours" fonctionne...- Le message d'erreur complet est
Fatal error: Uncaught Error: Call to undefined function utf8_encode() in ...
. J'ai réussi à remplacer la coder la fonction avecmb_convert_encoding($value, 'UTF-8')
, mais je veux toujours savoir ce qui provoque l'erreur. - J'avais besoin de la fonction de convertir les chaînes que j'ai eu de LDAP. Que puis-je dire sur le message d'erreur?
- Est-ce le même paquet? Qui est, n'a 7.0.3-9 produisent pas cette erreur? Si oui, vous pourriez envisager le dépôt d'un rapport de bogue avec
deb.sury.org
. - Malheureusement, je ne me souviens pas de la version du serveur courut en avant, mais l'erreur n'a certainement pas se produire avant la mise à jour de 7.0.3-10. Je vais faire quelques recherches sur les récents changements de PHP7. Merci pour m'amener sur la bonne voie!
- Si vous exécutez
php -m
ne listexml
? Vous avez probablement besoin d'installer le paquet commephp7-xml
. - Cloué, merci! Pas de
xml
extension -> installé -> le problème est résolu. N'hésitez pas à écrire cela comme une réponse afin que je puisse officiellement l'accepter. mb_convert_encoding($value, 'UTF-8')
seulement fait la même chose queutf8_encode($value)
si votredefault_charset
(PHP 5.6+) oumbstring.internal_encoding
(PHP 5.5 ou une version antérieure) est réglé sur "ISO-8859-1". Sinon, vous aurez envie de définir explicitement le de codage avecmb_convert_encoding($value, 'UTF-8', 'ISO-8859-1')
- Merci pour l'astuce. Je suis de retour à
utf8_encode
de toute façon.
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème. Il suffit d'installer
php7.0-xml
paquet. Ubuntu 16.04:Edit: Redémarrer apache2 pour charger le nouveau package.
utf8_encode
etutf8_decode
ont été déplacés vers l'ext/standard que de 7,2, de sorte qu'ils seront toujours disponibles à partir de ce point (ext/standard est toujours disponible).sudo apt-get install php-xml
nginx
avecphp-fpm
, à l'exception, bien sûr, vous devez redémarrernginx
Sur Ubuntu, vous avez le message suivant lors de la mise à niveau de PHP7:
il est donc l'un de ces paquets qui cause le problème. Dans ce cas, il est
php-xml
.Note le
Vous pouvez corriger cela en
Que le haut voté réponse n'a pas de travail pour moi j'ai trouvé encore un autre paquet pour php7 qui (évident de par son nom), il fixe pour moi
sudo apt install php-mbstring
fera l'affaire) - version sans tracas.Si vous êtes sur CentOS, la commande suivante devrait fonctionner:
Dans Ubuntu 16.04 LTS, avec php 5.6, essayez:
La utf8_decode et utf8_encode les fonctions sont accessibles en php 7:
fonction.utf8-encode - manuel php
C'est parce que le paquetage php-xml est manquant dans votre installation de php.
Si votre serveur est en cours d'exécution Mandrake, entrez "urpmi php-xml".
Si votre serveur est en cours d'exécution EASYPHP sous Windows, cliquez sur le EASYPHP logo pour activer le php-xml module.
Sur debian ou ubuntu, essayez :
php7.0-xmlrpc
ouphp7.0-xml
, ou les deux?J'ai rencontré le même problème et pour moi,
et de redémarrer le serveur apache2 résolu le problème (sur Ubuntu 16.04 LTS).