PHP 7 simpleXML

71

Ich teste PHP7 und habe nach einem kürzlich durchgeführten Update ein seltsames Problem. SimpleXML sollte standardmäßig aktiviert sein und meine phpinfoSeite zeigt, dass es verfügbar ist:

Geben Sie hier die Bildbeschreibung ein

Die Funktionen sind jedoch nicht verfügbar:

<?php

if (function_exists('simplexml_load_file')) {
    echo "simpleXML functions are available.<br />\n";
} else {
    echo "simpleXML functions are not available.<br />\n";
}

// result-- NOT available

Und das Modul ist nicht als geladen aufgeführt:

~ $ php -m
[PHP Modules]
calendar
Core
ctype
curl
...
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib

Weiß jemand, ob es dafür eine Problemumgehung gibt?

Versions Information:

~ $ php -v
PHP 7.0.3-8+deb.sury.org~trusty+2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
user101289
quelle
4
Aus Ihrer Bildschirmaufnahme Ihrer phpinfo()Seite geht hervor, dass sich SimpleXML nur im Abschnitt "Modulautoren" befindet. Was Ihnen nur sagt, wer es geschrieben hat; Das bedeutet nicht, dass es installiert oder geladen ist. Wenn dies der einzige Ort ist, an dem es angezeigt phpinfo()wird, bedeutet dies vermutlich, dass es nicht installiert ist.
Brendan White
$ php -i | grep simplexml
Ravshan
5
Versuchen Sie, php-fpm neu zu starten. sudo systemctl neu starten php-fpm
phpd
1
Können
Apit John Ismail

Antworten:

93

Ich hatte das gleiche Problem und verwende Ubuntu 15.10.

In diesem Fall habe ich zur Lösung dieses Problems das Paket php7.0-xml mithilfe des Synaptic-Paketmanagers installiert, der SimpleXml enthält. Nach dem Neustart meines Apache-Servers wurde mein Problem behoben. Dieses Paket wurde in der Debian-Version geliefert und ist hier zu finden: https://packages.debian.org/sid/php7.0-xml .

Alexandre Barbosa
quelle
1
@Alexandre Wohoo hat OwnCloud wieder damit arbeiten lassen, perfekt!
Flatron
36
Ubuntu 16.04: sudo apt-get install php-xml
Sasha MaximAL
2
Es scheint, dass das Problem auch in Ubuntu Server 16.04 vorhanden ist. Nach einer Neuinstallation bin ich auf das Problem gestoßen. "Schwerwiegender PHP-Fehler: Nicht erfasster Fehler: Aufruf der undefinierten Funktion xml_parser_create ()" wurde in das PHP-Fehlerprotokoll ausgegeben. Durch die Installation des von Alexandre empfohlenen Pakets wurde das Problem behoben.
MikeyE
Das Paket ist nicht mehr verfügbar. Weiß jemand wo, wenn es eine andere Quelle gibt?
Mark Odey
@ MarkOdey Ich hatte 404 nicht gefunden, aber dann versuchte Lösung unten von Flatron und es funktionierte. Versuchen Sie 'apt update'
Martin
67

Für alle, die Ubuntu mit ppa:ondrej/phpPPA verwenden, wird das Problem dadurch behoben:

apt install php7.0-mbstring php7.0-zip php7.0-xml

(Siehe https://launchpad.net/~ondrej/+archive/ubuntu/php )

Vielen Dank an @Alexandre Barbosa für diesen Hinweis!

EDIT 20160423:

Einzeiler zur Behebung dieses Problems:

sudo add-apt-repository -y ppa:ondrej/php && sudo apt update && sudo apt install -y php7.0-mbstring php7.0-zip php7.0-xml

(Dies fügt den oben angegebenen ppa hinzu und stellt auch sicher, dass Sie immer das neueste PHP haben. Wir verwenden Ondřejs PHP ppa seit fast zwei Jahren und es funktioniert wie ein Zauber)

Flatron
quelle
1
Ich verwende PHP 7.1, habe also die Referenzen von 7.0 in 7.1 geändert und nach einem Neustart hat es funktioniert.
Mark Hewitt
22

Für Ubuntu 14.04 mit

PHP 7.0.13-1 + deb.sury.org ~ trusty + 1 (cli) (NTS)

sudo apt-get install php-xml

arbeitete für mich.

Deepak R.
quelle
15

Für Alpine (im Docker) können Sie verwenden apk add php7-simplexml .

Wenn das bei Ihnen nicht funktioniert, können Sie ausführen apk add --no-cache php7-simplexml. Dies ist der Fall, wenn Sie den Paketindex nicht zuerst aktualisieren.

Brismut
quelle
Danke, das hat heute bei mir funktioniert! Kann bestätigen, dass dies unter Alpine Linux 3.6.2 (Linux-Kernel 4.4.0-96-generic x86_64)
funktioniert
1
Es ist wichtig sicherzustellen, dass Sie nach der Installation des Pakets auf dem Alpine-Container ausgeführt werden docker restart <container_name>, damit diese Änderungen funktionieren.
Cudacoder
hat bei mir nicht funktioniert ... mit alpine3.7 im Docker ... php7-simplexml bekommen (fehlt): erforderlich von: world [php7-simplexml]
ronit
1
@ronit versuchen apk add --no-cache php7-simplexml. Sie benötigen die --no-cacheFlagge, wenn Sie nicht apk updatezuerst laufen .
Brismuth
12

Ich verwende Bash unter Windows (Ubuntu 16.04) und habe es gerade mit php7.0-xml installiert. Jetzt funktioniert alles für die Symfony 3.2.7 PHP-Anforderungen.

sudo apt-get install php7.0-xml
WebLuke
quelle
10

------------------ in Centos -------------------------

Finden Sie heraus, welches Paket PHP-XML enthält:

 yum provides php-xml

Wählen Sie dann aus der Ausgabeliste die entsprechende aus und installieren Sie sie

yum install php70u-xml-7.0.14-2.ius.centos7.x86_64
terwxqian
quelle
1
Dies ist eine gute Antwort, da der yum providesBefehl dem Benutzer hilft, das richtige Paket für jede installierte Version von PHP zu finden. Es ist nicht erforderlich, den vollständigen Paketnamen im yum installBefehl zu verwenden.
Craig Finch
7

Da Google mich hierher geführt hat, funktioniert dies unter Ubuntu 20.04 im Jahr 2020:

sudo apt install php7.4-xml

Denken Sie bei Apache2 an einen Neustart (wahrscheinlich nicht erforderlich):

sudo systemctl restart apache2
RustyNox
quelle
Dankeschön! das hat bei mir auf NGINX funktioniert !! Ich muss nur Folgendes tun: sudo apt installiere php7.3-xml (7.3 ist meine PHP-Version) und starte dann die Dienste neu: sudo service nginx
restart
4

Hatte das gleiche Problem unter AWS Linux 2, zeigt phpinfo (), dass SimpleXML installiert ist, aber nicht funktioniert. Unter cmd wurde mein Problem behoben

sudo yum install php-xml
BlueP
quelle
3

Normalerweise haben Sie auf Debian-Systemen unterschiedliche PHP-Konfigurationen für CLI und für PHP, die beispielsweise als Apache-Modul ausgeführt werden. Auf Ihrer PHP-Info-Seite wird möglicherweise Simplexml als über den Webserver aktiviert angezeigt, während es nicht über die CLI aktiviert ist.

Mike Brant
quelle
@ Mike-- danke, das ist wahr-- das Modul sollte jedoch standardmäßig aktiviert sein. Soweit ich weiß, müsste ich PHP neu kompilieren, um das Modul zu aktivieren, da Sie es in php.ini nicht aktivieren können.
user101289
0

Installieren Sie für Ubuntu 18.04 und php7.3 php7.3-xml sudo apt-get install php7.3-xml

Dadurch wird die erforderliche Simplex-Datei installiert

Pankaj Bhagat
quelle
0

meine Erfahrung

  1. Holen Sie sich Ihre PHP-Version

    PHP - Version

  2. Instal-Paket für Ihre PHP-Version

    sudo apt-get install php7.4-xml

  3. Starten Sie Apache neu

    sudo systemctl apache2 neu laden

elftine
quelle