PHP7: installer le problème d'ext-dom

168

J'exécute laravel 5.4 sur le serveur Ubuntu 16.04 avec PHP7. essayer d'installer le cviebrock/eloquent-sluggablepackage jette une erreur:

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.

Je n'ai aucun problème à installer ce package sur la version locale de l'application.

amin
la source

Réponses:

363

Tout d'abord, lisez l'avertissement! Il dit de ne pas exécuter le compositeur en tant que root ! Deuxièmement, vous utilisez probablement Xammp sur votre local qui a les bibliothèques php requises par défaut.

Mais dans votre serveur, vous manquez ext-dom. php-xmla tous les packages dont vous avez besoin. Ainsi, vous pouvez simplement l'installer en exécutant:

sudo apt-get update
sudo apt install php-xml

Très probablement, vous manquez mbstringaussi. Si vous obtenez l'erreur, installez également ce package avec:

sudo apt-get install php-mbstring

Puis exécutez:

composer update
composer require cviebrock/eloquent-sluggable
Anar Bayramov
la source
Merci . si je ne l'utilise pas sudopour exécuter le compositeur, obtenez cette erreur:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
amin
4
c'est une recherche de problème d'autorisation pour les commandes chmod et chown. Changer l'autorisation et le propriétaire de ce dossier, tout ira bien.
Anar Bayramov
@rodrane il y a une faute de frappe dans votre code pour installer le php-mbstringpaquet, ça devrait être sudo apt-get. Autre que ça; il fonctionne comme un charme. Merci!
Robin B
J'ai installé php7.0-xml sur ma machine mais le compositeur me lance toujours cette erreur quand je fais uncomposer install
Salustiano Muniz
@SalustianoMuniz Vous devrez peut-être activer les modules en PHP. Par exemple, utilisez sudo phpenmod xmlet faites de même pour xmlreader& xmlwriter. Redémarrez ensuite votre serveur (si apache:) sudo service apache2 restartet réessayez d'installer.
Tim Visée
112

Pour ceux qui veulent installer ext-dom sur php 7.1 et plus, exécutez cette commande:

sudo apt install php-xml
Payam Khaninejad
la source
5
Cela a fonctionné pour moi en utilisant Ubuntu 18.04 - de loin la meilleure réponse.
fouet le
Le problème avec cette réponse est qu'elle utilise la version php par défaut définie actuellement. Par exemple dire que je ne sudo update-alternatives --set php /usr/bin/php7.0, php-xmltéléchargerai php7.0-xml. Alors méfiez-vous lorsque vous utilisez cette approche, je recommanderais toujours l'approche de
@anar
Mais l'exemple montre clairement que l'OP a demandé une version 7.0 que la réponse choisie n'a pas suivi. C'est une anomalie. Être conscient de la version a cependant du sens.
gkephorus
4

Pour 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

Sélectionnez ensuite la version php-xml correspondant à votre version php:

# 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
la source
3

sudo apt install php-xml fonctionnera mais le fait est qu'il téléchargera le plugin pour la dernière version de PHP.

Si votre version PHP n'est pas la dernière, vous pouvez y ajouter une version:

# 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

# PHP 7.4 (latest)
sudo apt install php-xml
Joueur1
la source
2

courir simplement

sudo apt install php-xml

ça a marché pour moi

Dimuthu Maduranga
la source