首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何修补phar软件包?

如何修补phar软件包?
EN

Stack Overflow用户
提问于 2022-05-30 08:50:16
回答 2查看 45关注 0票数 0

你是如何给一个phar包打补丁的?例如,如果我想要修补程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (function_exists('posix_getuid') && posix_getuid() === 0) {
if ($commandName !== 'self-update' && $commandName !== 'selfupdate') {
$io->writeError('<warning>Do not run Composer as root/super user! See https://getcomposer.org/root for details</warning>');

从作曲家到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (false && posix_getuid() === 0) {
if ($commandName !== 'self-update' && $commandName !== 'selfupdate') {
$io->writeError('<warning>Do not run Composer as root/super user! See https://getcomposer.org/root for details</warning>');

我该怎么做?仅仅编辑代码通常会导致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PHP Fatal error:  Uncaught PharException: phar "/usr/local/bin/composer" has a broken signature in /usr/local/bin/composer:28
Stack trace:
#0 /usr/local/bin/composer(28): Phar::mapPhar()
#1 {main}
  thrown in /usr/local/bin/composer on line 28
EN

回答 2

Stack Overflow用户

发布于 2022-06-01 01:58:18

您可以将php配置为告诉phars不要在运行时使用导致该错误的签名检查。

将以下内容配置为false https://www.php.net/manual/en/phar.configuration.php#ini.phar.require-hash

此选项将强制所有打开的Phar存档包含某种签名(当前支持MD5、SHA1、SHA256、SHA512和OpenSSL ),并且拒绝处理任何不包含签名的Phar存档。

编辑:

https://github.com/composer/composer

  1. 下载编写器

修改编译器以删除散列https://github.com/composer/composer/blob/575fbfb53fcc2388916d554271c99c8281fea782/src/Composer/Compiler.php#L81

您需要使用phar.require-hash=0命令重新编译composer并使用运行

票数 1
EN

Stack Overflow用户

发布于 2022-06-01 03:40:47

首先打开phar:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -rfv unpacked;
mkdir unpacked;
php --define open_basedir= --define phar.readonly=0 -r '(new Phar("composer.phar"))->convertToExecutable(Phar::TAR,Phar::NONE)->extractTo("unpacked/");'

然后在未打包的dir (在您的例子中是unpacked/src/Composer/Console/Application.php )中进行修补,然后重新打包phar:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -f hotpatched.phar;
php --define open_basedir= --define phar.readonly=0 -r '$phar=new Phar("hotpatched.phar");$phar->buildFromDirectory("unpacked");$phar->setStub("#!/usr/bin/env php\n".$phar->createDefaultStub("bin/composer"));'

但是将bin/composer替换为phar包的真正入口点(在composer的情况下,它是bin/composer ),然后使热修补的phar可执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod +x hotpached.phar

瞧,您的phar被修补了:) phar甚至与php.ini phar.require_hash=1一起工作。

提示:如果您希望phar压缩/缩小,可以添加$phar->compress(Phar::BZ2);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72437690

复制
相关文章
漫谈软件开发过程
一个合理而又有效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。目前软件开发一般过程包含以下几个步骤:理解需求、架构设计、单元测试、监控埋点、集成测试、性能测试、文档样例、上线流程和变更管理,下面我将针对以上几个步骤进行详细阐述。
木可大大
2018/07/25
3830
漫谈软件开发过程
Adobe认证和Adobe软件有什么区别?
因为Adobe这家公司就像微软的Office一样,只要你需要工作或者创作,那么在你的电脑系统里,总会有那么一两款软件来自Adobe公司。
IT胶囊
2023/04/24
5830
游戏测试和软件测试有什么区别?
针对手游而言,游戏测试的本质是APP,所以不少手游的测试方式与APP测试异曲同工,然而也有所不同。APP更多的是具有一种工具,一款APP好不好用不重要,关键点在于实用。而游戏则具有一种玩具属性,它并不见得实用,但他要符合玩家的好恶,要能让玩家体验到愉悦感。
新梦想IT职业教育
2019/09/20
1.7K0
软件开发过程中的无奈与轮回
今天回北京的航班又毫无疑问的晚点,在机场说一说今天的故事。 今天拜访了一个老客户,他们最近两年正在全新重构业务系统,开发的工作量非常大,50人的团队,期望能在2年内如期完成。我们聊到系统之前存在的一些问题,我建议在核心SQL审计、批处理任务、历史数据归档等方面进行精心设计。 用户说,在规划阶段,探讨过这些问题,可是一进入开发流程,就发现开始失控,开发任务优先,一起其他考虑全被推后,推到上线之后。我们发现,客户无奈的陷入了一个轮回,因为开发紧迫,推延或放弃一些在未来重要、目前可无的功能,而一旦软件上线之后,由
数据和云
2018/03/05
5280
软件开发过程中为什么要Review?
提高质量:通过Review可以发现潜在的问题和错误,从而避免在后期出现问题,提高软件的质量。
小冷coding
2023/12/11
4100
软件开发过程中为什么要Review?
聊聊软件开发过程中的“怪现象”
本文所要分享的是软件开发过程中,亲身经历过的“怪现象”。为什么说怪呢,人多力量大,似乎才符合常理,但是往往在软件项目开展的过程中会出现人多、事少、工作量大的情况,这跟我们以往的认知大相径庭。 替换高清
技术zhai
2018/05/21
5010
商业智能BI和报表软件有什么区别
现在,越来越多的人都听说过商业智能BI,很多人认为,BI就是做报表的。其实,报表只是BI的一部分,虽然BI应用的结果通常需要通过报表来展示,但是,BI绝对不等于报表。
数据前沿
2020/08/27
6860
商业智能BI和报表软件有什么区别
软件开发过程中使用的框架有哪些
框架在字面上的意思就是一个框子,有约束性和支撑性,是一个基本概念上的结构用于解决或处理复杂的问题,而在IT语言中的框架,是指未解决一个开放性问题而设计的具有一定约束性的支撑结构,在此结构上可以根据具体问题扩展,安插跟多的组成部分从而更快的构建完整解决问题方案。所以框架就是一套规范,使用这个框架就要遵守这个框架所规定的的约束。那么程序开发过程中所用到的有哪些框架。
北京锐智互动
2019/10/28
1.8K0
软件工程和项目管理
项目管理其实是一个非常宽泛的学科,它不仅仅只适合于软件(或互联网或IT)行业,其实也适合其他行业,例如建筑。
PM吃瓜
2020/07/23
1.1K0
软件工程和项目管理
软件开发过程自动化原理及技术(完整示例)
软件开发过程自动化原理及技术 一个简单完整的自动化示例 1   概述 关于本文,最开始只是想写一些关于 软件自动化测试开发 的文章,但是后来写着写着,发现不先在宏观上的软件开发过程进行介绍,不会引起大
用户1170933
2018/01/05
1.8K0
软件开发过程自动化原理及技术(完整示例)
直播带货软件开发过程中,如何实现图片上传
在直播带货软件开发过程中,通常文件上传为避免服务器压力,不会直接上传至自己的服务器,而是上传至三方云存储来托管数据。下面小编以七牛云为例,简单描述一下文件上传的实现过程。
万岳教育系统
2020/07/20
5450
直播带货软件开发过程中,如何实现图片上传
《软件过程与管理》复习
选择评审方法最有效的标准是: “对于最可能产生风险的工作成果,要采用最正式的评审方法.”
CSDN-Z
2024/10/17
1260
《软件过程与管理》复习
(二十一)敏捷项目管理和传统项目管理有何区别?
敏捷项目管理VS传统项目管理
砖家认证
2020/01/15
5.1K0
(二十一)敏捷项目管理和传统项目管理有何区别?
2019-09-04 软件开发过程中:命名的艺术
https://segmentfault.com/a/1190000009108845
Albert陈凯
2019/11/15
3810
MT5和MT4交易软件有什么区别?
很多人说MT5从字面上看是MT4的升级版,但实际上MT5并不是MT4的升级版,各是各。(这是他们官方说的不是升级版。)
全栈程序员站长
2022/08/23
1.1K0
软件项目管理笔记
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RbSNI3en-1589334555768)(1.png)]
全栈程序员站长
2022/08/19
1.5K0
kubernetes和docker有什么区别
本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。
码农编程进阶笔记
2023/03/23
2K0
kubernetes和docker有什么区别
OracleJDK和OpenJDK有什么区别?
Oracle JDK与OpenJDK里的JVM都是HotSpot VM。从源码层面说,两者基本上是同一个东西。
码农架构
2021/09/18
1.9K0
OracleJDK和OpenJDK有什么区别?
nacos和eureka有什么区别?
Nacos和Eureka都是服务发现和配置管理的解决方案,但它们在多个方面存在显著的差异。以下是它们之间的一些主要区别:
用户11188770
2024/07/01
1640
Exception和Error有什么区别?
世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的
灬沙师弟
2022/09/06
1.5K0

相似问题

返回指向本地结构的指针

20

返回指向本地结构的指针

21

包装结构使参考返回到本地?

24

返回函数中的本地结构

35

C:返回本地结构有效,但返回本地数组无效吗?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文