PHP7: cài đặt vấn đề ext-dom


168

Tôi đang chạy laravel 5.4 trên máy chủ Ubuntu 16.04 với PHP7. cố gắng cài đặt cviebrock/eloquent-sluggablegói ném một số lỗi:

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.

Tôi không gặp vấn đề gì khi cài đặt gói này trên phiên bản địa phương của ứng dụng.

Câu trả lời:


362

Trước hết, đọc cảnh báo! Nó nói không chạy trình soạn thảo như root ! Thứ hai, có lẽ bạn đang sử dụng Xammp trên máy cục bộ có các thư viện php được yêu cầu làm mặc định.

Nhưng trong máy chủ của bạn, bạn đang thiếu ext-dom. php-xmlcó tất cả các gói liên quan bạn cần. Vì vậy, bạn chỉ cần cài đặt nó bằng cách chạy:

sudo apt-get update
sudo apt install php-xml

Nhiều khả năng bạn cũng đang mất tích mbstring. Nếu bạn gặp lỗi, hãy cài đặt gói này cùng với:

sudo apt-get install php-mbstring

Sau đó chạy:

composer update
composer require cviebrock/eloquent-sluggable

cảm ơn . nếu tôi không sử dụng sudođể chạy trình soạn thảo, hãy nhận lỗi này:Could not read /home/pish/.composer/auth.json file_get_contents(/home/pish/.composer/auth.json): failed to open stream: Permission denied
amin

4
nó là một vấn đề cấp phép tìm kiếm các lệnh chmod và chown. Thay đổi quyền và chủ sở hữu của thư mục này, bạn sẽ ổn.
Anar Bayramov

@rodrane có một lỗi đánh máy trong mã của bạn để cài đặt php-mbstringgói, nó nên như vậy sudo apt-get. Khác hơn thế; Nó hoạt động như một say mê. Cảm ơn!
Robin B

Tôi đã cài đặt php7.0-xml trên máy của mình nhưng nhà soạn nhạc vẫn gặp phải lỗi này khi tôi thực hiệncomposer install
Salustiano Muniz

@SalustianoMuniz Bạn có thể phải kích hoạt các mô-đun trong PHP. Ví dụ: sử dụng sudo phpenmod xmlvà làm tương tự cho xmlreader& xmlwriter. Sau đó khởi động lại máy chủ của bạn (nếu apache sudo service apache2 restart:) và thử cài đặt lại.
Tim Visée

112

Dành cho ai muốn cài đặt ext-dom trên php 7.1 và chạy lệnh này:

sudo apt install php-xml

5
Điều này làm việc cho tôi bằng cách sử dụng Ubuntu 18.04 - cho đến nay là câu trả lời tốt nhất.
đánh vào

Vấn đề với câu trả lời này là nó hiện đang sử dụng phiên bản php mặc định. Ví dụ nói tôi làm sudo update-alternatives --set php /usr/bin/php7.0, php-xmlsẽ tải xuống php7.0-xml. Vì vậy, hãy cảnh giác khi sử dụng phương pháp này, tôi sẽ luôn đề xuất cách tiếp cận của
@anar

Nhưng ví dụ cho thấy rõ ràng rằng OP đã yêu cầu phiên bản 7.0 mà câu trả lời được chọn không tuân theo. Đây là một sự bất thường. Nhận biết phiên bản có ý nghĩa mặc dù.
gkephorus

4

Đối với 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

Sau đó chọn phiên bản php-xml phù hợp với phiên bản php của bạn:

# 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 sẽ hoạt động nhưng điều là nó sẽ tải xuống plugin cho phiên bản PHP mới nhất.

Nếu phiên bản PHP của bạn không phải là phiên bản mới nhất, thì bạn có thể thêm phiên bản trong đó:

# 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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.