PHP7: встановити випуск ext-dom


168

Я запускаю laravel 5.4 на сервері Ubuntu 16.04 з PHP7. намагаючись встановити cviebrock/eloquent-sluggableпакет, киньте певну помилку:

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.

У мене немає проблем із встановленням цього пакету на локальній версії програми.

Відповіді:


363

Перш за все, прочитайте попередження! Він говорить, що не запускайте композитора як root ! По-друге, ви, ймовірно, використовуєте Xammp у вашому локальному регіоні, який за замовчуванням має необхідні бібліотеки PHP.

Але на вашому сервері вас не вистачає ext-dom. php-xmlмає всі необхідні пакети. Отже, ви можете просто встановити його, запустивши:

sudo apt-get update
sudo apt install php-xml

Швидше за все, і ви пропали mbstring. Якщо ви отримаєте помилку, встановіть цей пакет також за допомогою:

sudo apt-get install php-mbstring

Потім запустіть:

composer update
composer require cviebrock/eloquent-sluggable

Дякую . якщо я не використовую sudoдля запуску композитора, отримайте цю помилку:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
amin

4
його дозвіл видавати пошук команд chmod та chown. Змініть дозвіл та власника цієї папки вам буде добре.
Анар Байрамов

@rodrane у вашому коді є помилка друку для встановлення php-mbstringпакета, це має бути sudo apt-get. Крім того, що; це працює як шарм. Дякую!
Робін Б

Я встановив php7.0-xml на своїй машині, але композитор все ще кидає мені цю помилку, коли я роблюcomposer install
Салустіано Муніз

@SalustianoMuniz Можливо, вам доведеться ввімкнути модулі в PHP. Наприклад, використовуйте sudo phpenmod xmlта робіть те ж саме для xmlreader& xmlwriter. Потім перезавантажте сервер (якщо apache:) sudo service apache2 restartі спробуйте встановити його ще раз.
Tim Visée

112

Для кого потрібно встановити ext-dom на php 7.1 та вище, запустіть цю команду:

sudo apt install php-xml

5
Це працювало для мене за допомогою Ubuntu 18.04 - безумовно найкраща відповідь.
віночок

Проблема з цією відповіддю полягає в тому, що вона використовує стандартну версію php, встановлену на даний момент. Наприклад скажіть, що я sudo update-alternatives --set php /usr/bin/php7.0, php-xmlзавантажу php7.0-xml. Тому будьте обережні, використовуючи цей підхід, я завжди рекомендував би підхід
@anar

Але на прикладі чітко видно, що ОП вимагала версії 7.0, на яку вибрана відповідь не випливала. Це аномалія. Бути в курсі версії має сенс, хоча.
гкефор

4

Для 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

Потім виберіть версію php-xml, що відповідає вашій версії 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 буде працювати, але річ у тому, що він завантажить плагін для останньої версії PHP.

Якщо ваша версія PHP не сама остання, ви можете додати її у версію:

# 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.