【发布时间】:2021-11-05 13:19:00
【问题描述】:
我在使用 composer 在我的生产服务器上安装 PHPOffice/PHPSpreadsheet 时遇到问题。当我运行composer install 或composer update 时,我得到以下信息
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires phpoffice/phpspreadsheet ^1.19.0 -> satisfiable by phpoffice/phpspreadsheet[1.19.0].
- phpoffice/phpspreadsheet 1.19.0 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php.ini
- /etc/php.d/20-bcmath.ini
- /etc/php.d/20-bz2.ini
- /etc/php.d/20-calendar.ini
- /etc/php.d/20-ctype.ini
- /etc/php.d/20-curl.ini
- /etc/php.d/20-dom.ini
- /etc/php.d/20-exif.ini
- /etc/php.d/20-fileinfo.ini
- /etc/php.d/20-ftp.ini
- /etc/php.d/20-gd.ini
- /etc/php.d/20-gettext.ini
- /etc/php.d/20-iconv.ini
- /etc/php.d/20-mbstring.ini
- /etc/php.d/20-mysqlnd.ini
- /etc/php.d/20-pdo.ini
- /etc/php.d/20-phar.ini
- /etc/php.d/20-posix.ini
- /etc/php.d/20-shmop.ini
- /etc/php.d/20-simplexml.ini
- /etc/php.d/20-sockets.ini
- /etc/php.d/20-sodium.ini
- /etc/php.d/20-sqlite3.ini
- /etc/php.d/20-sysvmsg.ini
- /etc/php.d/20-sysvsem.ini
- /etc/php.d/20-sysvshm.ini
- /etc/php.d/20-tokenizer.ini
- /etc/php.d/20-xml.ini
- /etc/php.d/20-xmlwriter.ini
- /etc/php.d/20-xsl.ini
- /etc/php.d/30-mysqli.ini
- /etc/php.d/30-pdo_mysql.ini
- /etc/php.d/30-pdo_sqlite.ini
- /etc/php.d/30-xmlreader.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
bash-4.2$ composer install --with-all-dependencies
[Symfony\Component\Console\Exception\RuntimeException]
The "--with-all-dependencies" option does not exist.
install [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-scripts] [--no-progress] [--no-install] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] [<packages>]...
我正在运行 PHP 8.0,当我安装它时,我安装了 php-zip
当我运行 php -m 时,我得到以下列表
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
zlib
[Zend Modules]
我已经尝试了所有我能想到的方法来启用 zip 扩展。我什至尝试使用sudo yum install php-zip 再次安装它,然后尝试启用它。
我使用以下命令安装了我的 PHP 堆栈:
sudo yum -y install php php-{cli,fpm,mysqlnd,zip,devel,gd,mbstring,curl,xml,pear,bcmath,json}
安装 PHP 后,我运行 php -m 并看到未加载 zip 模块。然后我运行sudo yum -y php-zip 再次查看加载的模块,但它仍然不存在。然后我修改了 php.ini 文件并添加了extension=php。在我运行php -v 并收到此消息后
PHP警告:PHP启动:无法加载动态库'zip'(试过:/usr/lib64/php/modules/zip(/usr/lib64/php/modules/zip:无法打开共享对象文件:没有这样的文件或目录), /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在第 0 行的未知
PHP 8.0.12(cli)(构建:2021 年 10 月 19 日 10:34:32)(NTS gcc x86_64)
版权所有 (c) PHP 集团
Zend Engine v4.0.12,版权所有 (c) Zend Technologies
这是我用来安装 PHP 8 的完整命令列表。我按照该网站上的说明进行操作:https://www.tecmint.com/install-php-8-on-centos/
这是我使用的命令
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --disable 'remi-php*'
sudo yum-config-manager --enable remi-php80
sudo yum -y install php php-{cli,fpm,mysqlnd,zip,devel,gd,mbstring,curl,xml,pear,bcmath,json}
有人有什么想法或想法吗?
【问题讨论】:
-
您是如何尝试启用该扩展的?直到
php -m列出了扩展名,这才正常工作。在此之前,这个问题与 Composer 或您想使用 Composer 安装的任何软件包无关 -
另外,您不应在生产服务器上使用
composer require。在本地机器上运行它,并将生成的composer.lock部署到生产服务器。部署期间仅使用composer install -
我尝试将
extension=zip添加到php.ini文件中。重新加载 apache 时出现错误,它无法在任何位置找到 zip 文件。根据我的阅读,PHP 现在会自动在 php.d 目录中加载模块,而 zip 模块也不在那里。 -
如果该模块未在此处列出,则说明您没有正确安装它。请分享有关安装的更多详细信息。另外,请通过编辑为您的问题添加所有说明
-
你是怎么安装php8的?帕帕?官方回购(什么发行版)?从源代码编译?引导您进入 php 安装的页面应列出如何启用扩展
标签: php