Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在应用差异修补程序之前验证差异修补程序_Php_Diff_Patch_Auto Update - Fatal编程技术网

Php 在应用差异修补程序之前验证差异修补程序

Php 在应用差异修补程序之前验证差异修补程序,php,diff,patch,auto-update,Php,Diff,Patch,Auto Update,我正在寻找一个可移植的diff库(没有Pear,没有php非广泛支持的扩展,比如xdiff),它允许我为更新机制进行文件修补。我使用的diff文件使用的是统一格式 我发现class.simplediff.php witch非常好(即使它不支持开箱即用的文件,也只需要在字符串中加载一个文件) 但问题是,我无法找到一种方法来验证是否所有的替换都能够成功处理 您是否知道一个库,它允许在应用差异修补之前对其进行验证,或者您对如何进行验证有什么线索?我想不出一种方法来判断修补程序是否有效——也就是说,从逻

我正在寻找一个可移植的diff库(没有Pear,没有php非广泛支持的扩展,比如xdiff),它允许我为更新机制进行文件修补。我使用的diff文件使用的是统一格式

我发现class.simplediff.php witch非常好(即使它不支持开箱即用的文件,也只需要在字符串中加载一个文件)

但问题是,我无法找到一种方法来验证是否所有的替换都能够成功处理


您是否知道一个库,它允许在应用差异修补之前对其进行验证,或者您对如何进行验证有什么线索?

我想不出一种方法来判断修补程序是否有效——也就是说,从逻辑上说。但是,如果您的修补程序源被认为是“安全的”,您可以通过执行以下操作来检查它是否至少是有效的语法:

  • 要修补的文件
  • 补丁
  • 尝试使用PHP cli执行文件(例如
    PHP file.PHP
  • 如果第3步没有抛出致命的异常,那么补丁可能导致有效的PHP语法


    如果修补程序的源代码不安全,您可能不想这样做,因为执行任意PHP可能会导致有人控制您的机器。

    我已将修补程序.c代码翻译为PHP:

    c代码本身有点凌乱,PHP代码也是如此。hunk验证是有效的,但它并不像我需要的那样“安全”——这就是为什么它不是我想要的答案,但它可能会帮助其他人

    编辑:

    我写了一些东西。我还不确定它是否100%可靠,但就“以只读方式验证以确保补丁成功应用”而言,目前的结果确实不错:


    希望它能帮助某些人:)

    好吧,当使用unix补丁命令时,您可能会出现“Hunk failed”错误。这就是我想检查的。。。因为如果无法进行替换,通常不会从语法上破坏代码。