PHP7: Ext-Dom-Problem installieren

168

Ich verwende Laravel 5.4 auf einem Ubuntu 16.04-Server mit PHP7. Beim Versuch, das cviebrock/eloquent-sluggablePaket zu installieren , wird ein Fehler ausgegeben:

pish@let:/home/sherk/ftp/www$ sudo composer require cviebrock/eloquent-sluggable
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^4.2 for cviebrock/eloquent-sluggable
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/php-code-coverage 4.0.7 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/php-code-coverage 4.0.7 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - Installation request for phpunit/php-code-coverage (installed at 4.0.7) -> satisfiable by phpunit/php-code-coverage[4.0.7].

  To enable extensions, verify that they are enabled in those .ini files:
    - /etc/php/7.0/cli/php.ini
    - /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
    - /etc/php/7.0/cli/conf.d/10-opcache.ini
    - /etc/php/7.0/cli/conf.d/10-pdo.ini
    - /etc/php/7.0/cli/conf.d/20-calendar.ini
    - /etc/php/7.0/cli/conf.d/20-ctype.ini
    - /etc/php/7.0/cli/conf.d/20-exif.ini
    - /etc/php/7.0/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.0/cli/conf.d/20-ftp.ini
    - /etc/php/7.0/cli/conf.d/20-gd.ini
    - /etc/php/7.0/cli/conf.d/20-gettext.ini
    - /etc/php/7.0/cli/conf.d/20-iconv.ini
    - /etc/php/7.0/cli/conf.d/20-json.ini
    - /etc/php/7.0/cli/conf.d/20-mbstring.ini
    - /etc/php/7.0/cli/conf.d/20-mcrypt.ini
    - /etc/php/7.0/cli/conf.d/20-mysqli.ini
    - /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini
    - /etc/php/7.0/cli/conf.d/20-phar.ini
    - /etc/php/7.0/cli/conf.d/20-posix.ini
    - /etc/php/7.0/cli/conf.d/20-readline.ini
    - /etc/php/7.0/cli/conf.d/20-shmop.ini
    - /etc/php/7.0/cli/conf.d/20-sockets.ini
    - /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.0/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.0/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.0/cli/conf.d/20-tokenizer.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Installation failed, reverting ./composer.json to its original content.

Ich habe kein Problem damit, dieses Paket auf der lokalen Version der App zu installieren.

Amin
quelle

Antworten:

362

Lesen Sie zuerst die Warnung! Es heißt, nicht Composer als Root ausführen ! Zweitens verwenden Sie wahrscheinlich Xammp auf Ihrem lokalen Computer, der standardmäßig über die erforderlichen PHP-Bibliotheken verfügt.

Aber auf Ihrem Server fehlen Sie ext-dom. php-xmlhat alle zugehörigen Pakete, die Sie benötigen. Sie können es also einfach installieren, indem Sie Folgendes ausführen:

sudo apt-get update
sudo apt install php-xml

Höchstwahrscheinlich fehlen Sie mbstringauch. Wenn Sie den Fehler erhalten, installieren Sie dieses Paket auch mit:

sudo apt-get install php-mbstring

Dann renne:

composer update
composer require cviebrock/eloquent-sluggable
Anar Bayramov
quelle
Vielen Dank . Wenn ich nicht sudofür die Ausführung von Composer verwenden, erhalten Sie diesen Fehler:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
Amin
4
Es ist eine Berechtigungssuche nach chmod- und chown-Befehlen. Ändern Sie die Berechtigung und den Besitzer dieses Ordners.
Anar Bayramov
@rodrane Es gibt einen Tippfehler in Ihrem Code für die Installation des php-mbstringPakets, es sollte sein sudo apt-get. Anders als das; es wirkt wie ein Zauber. Vielen Dank!
Robin B
Ich habe php7.0-xml auf meinem Computer installiert, aber der Composer gibt mir immer noch diesen Fehler, wenn ich eincomposer install
Salustiano Muniz
@SalustianoMuniz Möglicherweise müssen Sie die Module in PHP aktivieren. Verwenden sudo phpenmod xmlSie zum Beispiel dasselbe für xmlreader& xmlwriter. Starten Sie dann Ihren Server neu (wenn Apache:sudo service apache2 restart und versuchen Sie erneut zu installieren.
Tim Visée
112

Für wen Sie ext-dom auf PHP 7.1 und höher installieren möchten, führen Sie diesen Befehl aus:

sudo apt install php-xml
Payam Khaninejad
quelle
5
Dies funktionierte bei mir mit Ubuntu 18.04 - bei weitem die beste Antwort.
Schneebesen
Das Problem bei dieser Antwort ist, dass die derzeit festgelegte Standard-PHP-Version verwendet wird. Zum Beispiel sagen, ich tue sudo update-alternatives --set php /usr/bin/php7.0, php-xmlwird herunterladen php7.0-xml. Seien Sie also vorsichtig, wenn Sie diesen Ansatz verwenden. Ich würde @anars Ansatz immer empfehlen
natürlich am
Das Beispiel zeigt jedoch deutlich, dass das OP nach einer 7.0-Version gefragt hat, der die ausgewählte Antwort nicht folgte. Dies ist eine Anomalie. Versionsbewusst zu sein macht jedoch Sinn.
Gkephorus
4

Für CentOS, RHEL, Fedora:

$ yum search php-xml
============================================================================================================ N/S matched: php-xml ============================================================================================================
php-xml.x86_64 : A module for PHP applications which use XML
php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php-xmlseclibs.noarch : PHP library for XML Security
php54-php-xml.x86_64 : A module for PHP applications which use XML
php54-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php55-php-xml.x86_64 : A module for PHP applications which use XML
php55-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php56-php-xml.x86_64 : A module for PHP applications which use XML
php56-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php70-php-xml.x86_64 : A module for PHP applications which use XML
php70-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php71-php-xml.x86_64 : A module for PHP applications which use XML
php71-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php72-php-xml.x86_64 : A module for PHP applications which use XML
php72-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php73-php-xml.x86_64 : A module for PHP applications which use XML
php73-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol

Wählen Sie dann die PHP-XML- Version aus, die Ihrer PHP-Version entspricht:

# php -v
PHP 7.2.11 (cli) (built: Oct 10 2018 10:00:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

# sudo yum install -y php72-php-xml.x86_64
Shoaib Khan
quelle
3

sudo apt install php-xml wird funktionieren, aber die Sache ist, es wird das Plugin für die neueste PHP-Version herunterladen.

Wenn Ihre PHP-Version nicht die neueste ist, können Sie eine Version hinzufügen:

# PHP 7.1
sudo apt install php7.1-xml

# PHP 7.2:
sudo apt install php7.2-xml

# PHP 7.3
sudo apt install php7.3-xml
Spieler1
quelle
2

einfach laufen

sudo apt install php-xml

Es hat bei mir funktioniert

Dimuthu Maduranga
quelle