服务器以前有个 php5.4, 后面加了个 php7.3
用 composer 自动定位 5.4, 导致我 tp5.1 无法安装依赖, 现在用网上这个方式安装。 其他都 ok 了。 tp 却安装不上了
着急。。。
[root@yunguizhou star]# /usr/local/php/bin/php composer.phar install
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update <package name>`.
Package operations: 1 install, 0 updates, 0 removals
- Downloading topthink/framework (v5.1.40)
- Installing topthink/framework (v5.1.40): Extracting archive
Failed to extract topthink/framework: (9) unzip -qq '/home/wwwroot/star/vendor/composer/tmp-7ea691416e557dbb8cb8858815b4c4ef' -d '/home/wwwroot/star/vendor/composer/bd3e9c7b'
unzip: cannot find or open /home/wwwroot/star/vendor/composer/tmp-7ea691416e557dbb8cb8858815b4c4ef.
This most likely is due to a custom installer plugin not handling the returned Promise from the downloader
See https://github.com/composer/installers/commit/5006d0c28730ade233a8f42ec31ac68fb1c5c9bb for an example fix
Package endroid/qrcode is abandoned, you should avoid using it. Use endroid/qr-code instead.
Package zendframework/zend-escaper is abandoned, you should avoid using it. Use laminas/laminas-escaper instead.
Generating autoload files
10 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
1
dilu 2020-10-28 11:12:03 +08:00
你这个错怎么看都不像是因为 php 版本报出来的啊
加上 --no-plugins 参数试试? |
2
edk24 OP 已解决,composer 版本太新,换成 1.10x 就可以了。去 composer 官网下载低版本的
|
4
Seanfuck 2020-10-28 11:36:04 +08:00
真是时代变了,我还是喜欢手工下载代码解压,php 用什么鬼 composer,就跟 js 用什么鬼 npm 一样,一堆问题,没见什么优点。
|
8
Mitt 2020-10-28 11:53:10 +08:00 1
@Seanfuck #4 “一堆问题” 莫名其妙,就跟 linux 装个啥软件都网上一堆教程教你如何手工编译安装一样,人家本来就有稳定版的包 apt install 就装完了还非得自己编译出一堆问题怪 linux 太复杂,除非有需要,否则谁还会把时间浪费在这上面
|
9
Mitt 2020-10-28 11:55:43 +08:00
“unzip: cannot find or open /home/wwwroot/star/vendor/composer/tmp-7ea691416e557dbb8cb8858815b4c4ef.” 这一行报错最主要,要么就是下载失败了,要么就是文件占用权限问题,降级 composer 应该是顺便清了缓存所以才好的,应该多花点时间了解一下具体原因的,千万不要直接甩锅
|
10
hbolive 2020-10-28 11:57:04 +08:00 1
Composer 实现了一键包安装、版本依赖解析、自动加载,是现代 PHP 的基石。从此 PHP 迎来了大统一时代。如今,不仅是框架,任何 PHP 项目,都可以使用 Composer 安装项目所需要的库包。
|
11
Seanfuck 2020-10-28 13:54:40 +08:00 via iPhone
@Mitt 我说的就是这个 install 一堆问题!正好你说了编译问题,如果 install 一下能解决问题,谁愿意去编译,现实中就是有很多情况需要编译。再说回来,你发布 php 项目是 install 好一起发布还是线上再 install ?大家的习惯一样吗?如果线上机器因为安全或管理原因不能连外网,这时如果要 install 如何方便的处理?
|
12
Seanfuck 2020-10-28 14:00:42 +08:00 via iPhone
@agdhole 如果是包管理确实必备,但 php 的( Js 也一样)这个包方式有些别扭,如果是类似编译成二进制的方式那就没问题。
|
13
JaguarJack 2020-10-28 14:13:22 +08:00
@Seanfuck composer 问题还多?从没遇到过
|
14
Mitt 2020-10-28 14:43:16 +08:00
@Seanfuck #11 线上 install,如果你不能连外网那肯定另当别论,但凡不是网络问题都不应该把包一起打包上去,而且现在都是 docker 镜像了就更没这个问题了,而且如果 install 都有问题,那你系统环境就已经是有问题的了,这就不能怪包管理器了,应该先解决环境问题不然就算你自己编译也照样会有一大堆问题
|
16
hsk9044 2020-10-28 15:53:13 +08:00
@Seanfuck 时代是会变的, 观念是要更新的. 手工安装局限性太大了, 新技术的产生是为了提高效率的, 大家少在这种事情上花时间, 不就有更多的时间可以摸鱼了, 何乐不为
|
17
topthink 2020-10-28 16:45:48 +08:00 1
ThinkPHP 全版本都已经兼容 Composer2 了的哦
|
18
Seanfuck 2020-10-28 17:13:47 +08:00 via iPhone
|
19
Mitt 2020-10-28 17:32:17 +08:00
@Seanfuck #18 我觉得这不是运维的问题,这是你的问题。。。事实上编译环境是开发提供的,运维只是执行编译命令而已,放到以前 PHP 等这些环境也是要运维去装的,composer 就是为了减少问题才存在的,现在 docker 更是全套自己包了,运维干的事情已经很少了,要改变下思维了
|
20
Seanfuck 2020-10-28 21:00:30 +08:00 via iPhone
@Mitt 如果执行“开发给的”命令可靠怎么会存在题主的问题?运维安装环境是装运行环境,不是装代码,如果运维也出现题主的问题,那是不是多了麻烦事?再比如你的代码是给客户用的,客户连运维也没有,是不是每次都得找你?再比如客户的服务器是虚拟空间没有命令权限,装不了那只能怪客户了? PHP 用 docker 的比例不高,如果 80%的网站用 php,里面用 docker 的占多少?与时俱进是没错,但要正视存在的问题,抛开传统方式的 PHP 站点,那些改变思维的市场率不知还剩多少?
|
22
2kCS5c0b0ITXE5k2 2020-10-28 21:36:40 +08:00
@Seanfuck php 不是编译型语言 为什么包要编译成二进制. 你用包都不看源码和实现的吗
|
23
2kCS5c0b0ITXE5k2 2020-10-28 21:41:43 +08:00
@Seanfuck tp6.0 引用了 7 个包。 如果不用 composer 还要处理版本问题。
|
27
dvaknheo 2020-10-29 10:21:07 +08:00
|
28
dvaknheo 2020-10-29 10:27:25 +08:00
php5 时代的框架,没有一个不被魔改的
composer 结束了系统库被魔改这一种烂现象。 |
30
RickyC 2020-10-29 13:00:40 +08:00
|
31
edk24 OP 感谢大家的回复,现在问题是总结出来了,无法下载是因为我用了最新的 composer2,tp 的包还没有兼容这个新版本改动; 切换回旧版本就可以了。
关于用 composer 的问题, 我个人是觉得很好用, 很方便, 要用什么东西直接用, 不需要这里引入一个文件哪里映入问题, 服务器上下载包用镜像就可以了。 这次是出问题在 composer 新版特性上; 优点是专注敲业务, 不需要管很多东西的实现,只需要引用就可以了,并且 git 是自动忽略依赖文件的,所以 git 仓库里只有业务代码, 没有多余的乱七八糟的文件。 这个是我个人的想法, @Seanfuck @skymei @agdhole @Mitt @hbolive @JaguarJack @ben1024 @hsk9044 @emeab @dvaknheo @RickyC |