PHP7: instala el problema ext-dom

168

Estoy ejecutando laravel 5.4 en el servidor Ubuntu 16.04 con PHP7. tratando de instalar el cviebrock/eloquent-sluggablepaquete arrojar algún error:

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.

No tengo problemas para instalar este paquete en la versión local de la aplicación.

amin
fuente

Respuestas:

363

En primer lugar, lea la advertencia! ¡Dice que no ejecutes el compositor como root ! En segundo lugar, probablemente esté utilizando Xammp en su local que tiene las bibliotecas de php requeridas por defecto.

Pero en tu servidor te estás perdiendo ext-dom. php-xmltiene todos los paquetes relacionados que necesitas. Entonces, simplemente puede instalarlo ejecutando:

sudo apt-get update
sudo apt install php-xml

Lo más probable es que te falte mbstringtambién. Si recibe el error, instale este paquete también con:

sudo apt-get install php-mbstring

Entonces corre:

composer update
composer require cviebrock/eloquent-sluggable
Anar Bayramov
fuente
Gracias . si no lo uso sudopara ejecutar composer, aparece este error:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
amin
44
es una búsqueda de problemas de permisos para los comandos chmod y chown. Cambiar el permiso y el propietario de esta carpeta estará bien.
Anar Bayramov
@rodrane hay un error tipográfico en su código para instalar el php-mbstringpaquete, debería serlo sudo apt-get. Aparte de eso; funciona a las mil maravillas. ¡Gracias!
Robin B
Instalé php7.0-xml en mi máquina, pero el compositor todavía me da este error cuando hago uncomposer install
Salustiano Muniz
@SalustianoMuniz Puede que tenga que habilitar los módulos en PHP. Por ejemplo, use sudo phpenmod xmly haga lo mismo para xmlreader& xmlwriter. Luego reinicie su servidor (si es apache:) sudo service apache2 restarte intente instalarlo nuevamente.
Tim Visée
112

Para quienes deseen instalar ext-dom en php 7.1 y superior, ejecute este comando:

sudo apt install php-xml
Payam Khaninejad
fuente
55
Esto funcionó para mí usando Ubuntu 18.04, con mucho, la mejor respuesta.
batir el
El problema con esta respuesta es que usa la versión predeterminada de php establecida actualmente. Por ejemplo decir que sí sudo update-alternatives --set php /usr/bin/php7.0, php-xmlse descargará php7.0-xml. Así que tenga cuidado al usar este enfoque, siempre recomendaría el enfoque de
@anar
Pero el ejemplo muestra claramente que el OP solicitó una versión 7.0 que la respuesta seleccionada no siguió. Esto es una anomalía. Sin embargo, tener conocimiento de la versión tiene sentido.
gkephorus
4

Para 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

Luego seleccione la versión php-xml que coincida con su versión 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
fuente
3

sudo apt install php-xml funcionará pero la cosa es que descargará el complemento para la última versión de PHP.

Si su versión de PHP no es la última, entonces puede agregar una versión:

# 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
Jugador 1
fuente
2

simplemente corre

sudo apt install php-xml

me ha funcionado

Dimuthu Maduranga
fuente