PHP7: instalar problema ext-dom

168

Estou executando o laravel 5.4 no servidor Ubuntu 16.04 com PHP7. ao tentar instalar o cviebrock/eloquent-sluggablepacote, lance algum erro:

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.

Não tenho nenhum problema ao instalar este pacote na versão local do aplicativo.

amin
fonte

Respostas:

363

Antes de tudo, leia o aviso! Diz não executar o compositor como root ! Em segundo lugar, você provavelmente está usando o Xammp no seu local, que possui as bibliotecas php necessárias como padrão.

Mas no seu servidor você está ausente ext-dom. php-xmltem todos os pacotes relacionados que você precisa. Portanto, você pode simplesmente instalá-lo executando:

sudo apt-get update
sudo apt install php-xml

Provavelmente você também está desaparecido mbstring. Se você receber o erro, instale este pacote também com:

sudo apt-get install php-mbstring

Então corra:

composer update
composer require cviebrock/eloquent-sluggable
Anar Bayramov
fonte
obrigado . Se eu não usar sudopara executar compositor, obter este erro:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
amin
4
é um problema de permissão para procurar comandos chmod e chown. Alterar permissão e proprietário desta pasta, você ficará bem.
Anar Bayramov
@rodrane há um erro de digitação no seu código para instalar o php-mbstringpacote, deve ser sudo apt-get. Fora isso; Ele funciona como um encanto. Obrigado!
Robin B
Eu instalei php7.0-xml na minha máquina, mas o compositor ainda me jogar esse erro quando eu faço umacomposer install
Salustiano Muniz
@SalustianoMuniz Talvez você precise ativar os módulos em PHP. Por exemplo, use sudo phpenmod xmle faça o mesmo para xmlreader& xmlwriter. Em seguida, reinicie o servidor (se apache:) sudo service apache2 restarte tente instalar novamente.
Tim Visée 15/08/19
112

Para quem deseja instalar o ext-dom no php 7.1 ou superior, execute este comando:

sudo apt install php-xml
Payam Khaninejad
fonte
5
Isso funcionou para mim usando o Ubuntu 18.04 - de longe a melhor resposta.
bata
O problema com esta resposta é que ele usa a versão php padrão definida atualmente. Por exemplo, diga que sim sudo update-alternatives --set php /usr/bin/php7.0, php-xmlfará o download php7.0-xml. Então, ser cauteloso ao usar essa abordagem, eu sempre recomendo 's @anar abordagem
natral
Mas o exemplo mostra claramente que o OP solicitou uma versão 7.0 que a resposta selecionada não seguiu. Isso é uma anomalia. Estar ciente da versão faz sentido.
gkephorus 16/01
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

Em seguida, selecione a versão php-xml que corresponde à sua versão 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
fonte
3

sudo apt install php-xml funcionará, mas o problema é que ele fará o download do plugin para a versão mais recente do PHP.

Se sua versão do PHP não for a mais recente, você poderá adicionar uma versão:

# 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
Jogador1
fonte
2

simplesmente corra

sudo apt install php-xml

funcionou para mim

Dimuthu Maduranga
fonte