PHP composer 安装 thinkphp 报错问题, 求助(急)

2020-10-28 10:55:58 +08:00
 edk24

服务器以前有个 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!

4550 次点击
所在节点    PHP
31 条回复
dilu
2020-10-28 11:12:03 +08:00
你这个错怎么看都不像是因为 php 版本报出来的啊

加上 --no-plugins 参数试试?
edk24
2020-10-28 11:13:27 +08:00
已解决,composer 版本太新,换成 1.10x 就可以了。去 composer 官网下载低版本的
edk24
2020-10-28 11:13:43 +08:00
@dilu 已解决,谢谢
Seanfuck
2020-10-28 11:36:04 +08:00
真是时代变了,我还是喜欢手工下载代码解压,php 用什么鬼 composer,就跟 js 用什么鬼 npm 一样,一堆问题,没见什么优点。
skymei
2020-10-28 11:37:42 +08:00
@Seanfuck 那你确实是老了,composer 让 PHP 的包管理好用不少
agdhole
2020-10-28 11:39:07 +08:00
@Seanfuck #4 现代开发包管理都是必备了吧
Seanfuck
2020-10-28 11:46:30 +08:00
@skymei 但这个没有手工的可靠
Mitt
2020-10-28 11:53:10 +08:00
@Seanfuck #4 “一堆问题” 莫名其妙,就跟 linux 装个啥软件都网上一堆教程教你如何手工编译安装一样,人家本来就有稳定版的包 apt install 就装完了还非得自己编译出一堆问题怪 linux 太复杂,除非有需要,否则谁还会把时间浪费在这上面
Mitt
2020-10-28 11:55:43 +08:00
“unzip: cannot find or open /home/wwwroot/star/vendor/composer/tmp-7ea691416e557dbb8cb8858815b4c4ef.” 这一行报错最主要,要么就是下载失败了,要么就是文件占用权限问题,降级 composer 应该是顺便清了缓存所以才好的,应该多花点时间了解一下具体原因的,千万不要直接甩锅
hbolive
2020-10-28 11:57:04 +08:00
Composer 实现了一键包安装、版本依赖解析、自动加载,是现代 PHP 的基石。从此 PHP 迎来了大统一时代。如今,不仅是框架,任何 PHP 项目,都可以使用 Composer 安装项目所需要的库包。
Seanfuck
2020-10-28 13:54:40 +08:00
@Mitt 我说的就是这个 install 一堆问题!正好你说了编译问题,如果 install 一下能解决问题,谁愿意去编译,现实中就是有很多情况需要编译。再说回来,你发布 php 项目是 install 好一起发布还是线上再 install ?大家的习惯一样吗?如果线上机器因为安全或管理原因不能连外网,这时如果要 install 如何方便的处理?
Seanfuck
2020-10-28 14:00:42 +08:00
@agdhole 如果是包管理确实必备,但 php 的( Js 也一样)这个包方式有些别扭,如果是类似编译成二进制的方式那就没问题。
JaguarJack
2020-10-28 14:13:22 +08:00
@Seanfuck composer 问题还多?从没遇到过
Mitt
2020-10-28 14:43:16 +08:00
@Seanfuck #11 线上 install,如果你不能连外网那肯定另当别论,但凡不是网络问题都不应该把包一起打包上去,而且现在都是 docker 镜像了就更没这个问题了,而且如果 install 都有问题,那你系统环境就已经是有问题的了,这就不能怪包管理器了,应该先解决环境问题不然就算你自己编译也照样会有一大堆问题
ben1024
2020-10-28 15:10:15 +08:00
@Seanfuck 源码的包相对方便改造和断点
hsk9044
2020-10-28 15:53:13 +08:00
@Seanfuck 时代是会变的, 观念是要更新的. 手工安装局限性太大了, 新技术的产生是为了提高效率的, 大家少在这种事情上花时间, 不就有更多的时间可以摸鱼了, 何乐不为
topthink
2020-10-28 16:45:48 +08:00
ThinkPHP 全版本都已经兼容 Composer2 了的哦
Seanfuck
2020-10-28 17:13:47 +08:00
@hsk9044 是这样,这里讨论存在的问题,整体效率怎样。
@ben1024 没错,这是正常情况,“包”改造后经常有人没处理好,后面就被覆盖了。
@Mitt 运维可以把问题推给你,你的代码为什么还要他来装(这点 JS 做得好些,可以 build 最终结果,PHP 看起来是让运维去做 build ),这就是一堆问题之一。如果你全包进 docker 那是没问题。
Mitt
2020-10-28 17:32:17 +08:00
@Seanfuck #18 我觉得这不是运维的问题,这是你的问题。。。事实上编译环境是开发提供的,运维只是执行编译命令而已,放到以前 PHP 等这些环境也是要运维去装的,composer 就是为了减少问题才存在的,现在 docker 更是全套自己包了,运维干的事情已经很少了,要改变下思维了
Seanfuck
2020-10-28 21:00:30 +08:00
@Mitt 如果执行“开发给的”命令可靠怎么会存在题主的问题?运维安装环境是装运行环境,不是装代码,如果运维也出现题主的问题,那是不是多了麻烦事?再比如你的代码是给客户用的,客户连运维也没有,是不是每次都得找你?再比如客户的服务器是虚拟空间没有命令权限,装不了那只能怪客户了? PHP 用 docker 的比例不高,如果 80%的网站用 php,里面用 docker 的占多少?与时俱进是没错,但要正视存在的问题,抛开传统方式的 PHP 站点,那些改变思维的市场率不知还剩多少?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/719328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX