PHP7: installa il problema ext-dom


168

Sto eseguendo laravel 5.4 sul server Ubuntu 16.04 con PHP7. nel tentativo di installare il cviebrock/eloquent-sluggablepacchetto genera un errore:

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.

Non ho problemi a installare questo pacchetto sulla versione locale dell'app.

Risposte:


363

Prima di tutto, leggi l'avvertimento! Dice di non eseguire il compositore come root ! In secondo luogo, probabilmente stai usando Xammp sul tuo locale che ha le librerie php richieste come predefinite.

Ma nel tuo server ti manca ext-dom. php-xmlha tutti i pacchetti correlati di cui hai bisogno. Quindi, puoi semplicemente installarlo eseguendo:

sudo apt-get update
sudo apt install php-xml

Molto probabilmente anche tu manchi mbstring. Se ricevi l'errore, installa anche questo pacchetto con:

sudo apt-get install php-mbstring

Quindi eseguire:

composer update
composer require cviebrock/eloquent-sluggable

Grazie . se io non uso sudoper l'esecuzione di compositore, ottenere questo errore:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
Amin

4
è una ricerca di permessi per i comandi chmod e chown. Cambia l'autorizzazione e il proprietario di questa cartella andrà bene.
Anar Bayramov il

@rodrane c'è un errore di battitura nel tuo codice per l'installazione del php-mbstringpacchetto, dovrebbe essere sudo apt-get. Oltre a quello; Esso funziona magicamente. Grazie!
Robin B,

Ho installato php7.0-xml sulla mia macchina ma il compositore mi lancia ancora questo errore quando faccio uncomposer install
Salustiano Muniz

@SalustianoMuniz Potrebbe essere necessario abilitare i moduli in PHP. Ad esempio, utilizzare sudo phpenmod xmle fare lo stesso per xmlreader& xmlwriter. Quindi riavviare il server (se apache:) sudo service apache2 restarte provare a reinstallare.
Tim Visée,

112

Per chi desidera installare ext-dom su php 7.1 e versioni successive eseguire questo comando:

sudo apt install php-xml

5
Questo ha funzionato per me usando Ubuntu 18.04 - di gran lunga la risposta migliore.
frusta il

Il problema con questa risposta è che attualmente utilizza la versione predefinita di php impostata. Ad esempio dire che lo faccio sudo update-alternatives --set php /usr/bin/php7.0, php-xmlverrà scaricato php7.0-xml. Quindi fai attenzione quando usi questo approccio, consiglierei sempre l'approccio di
@anar

Ma l'esempio mostra chiaramente che l'OP ha richiesto una versione 7.0 che la risposta selezionata non ha seguito. Questa è un'anomalia. Essere consapevoli della versione ha senso però.
gkephorus,

4

Per 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

Quindi seleziona la versione php-xml corrispondente alla tua versione 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

3

sudo apt install php-xml funzionerà ma il fatto è che scaricherà il plugin per l'ultima versione di PHP.

Se la tua versione di PHP non è la più recente, puoi aggiungere la versione in essa:

# 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.