php - 使用 php 的 exec 函数在 Linux 中使用 diff

标签 php linux diff compare exec

我必须比较 2 个 xml 文件并使用 php 和 Linux 的 diff 命令生成补丁。这是我的代码:

<?php

// script file location: /var/local/out/upload.php
// ...

// $templateName file location: /var/local/out/upload/example_word_template/word/document.xml
// $filename file location: /var/local/out/upload/example_word/word/document.xml

// $templateName value: upload/example_word_template/word/document.xml
// $filename value: upload/example_word/word/document.xml

$command = "diff /var/local/out/$templateName /var/local/out/$filename > /var/local/out/patch.patch";
exec($command);
echo($command);

?>

浏览器输出:

diff/var/local/out/upload/example_word_template/word/document.xml/var/local/out/upload/example_word/word/document.xml >/var/local/out/patch.patch

如果我复制并粘贴输出并直接在 Linux 中执行,它运行得很好。但是脚本本身不会生成补丁文件。有什么问题吗?

最佳答案

PHP 有一个 PECL extension for xdiff您可能想试试。

xdiff_file_diff 手册中的示例

$old_version = 'my_script.php';
$new_version = 'my_new_script.php';

xdiff_file_diff($old_version, $new_version, 'my_script.diff', 2);

注意区别只是句法层面的,语义上没有区别

<element foo="foo" bar="bar"/>

<element 
    foo="foo"
    bar="bar"/>

关于php - 使用 php 的 exec 函数在 Linux 中使用 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449282/

相关文章:

php - 使用 Laravel 更新 MySQL 数据库字符集

linux - 配置服务器 SSH 以进行远程访问

linux - 需要深入了解编写操作系统 Shell 类(class)

python - 在 Python 中生成文本修订历史的 View

git - 在 git 中如何区分 microsoft word 文档?

php - Laravel Pagination "Three Dots"分隔符自定义

php - 如何连接两个或多个表,每个表具有相同的列名

c# - 是否可以不断地动态混合音轨并将结果传输到浏览器?

php - 常规 Linux 托管 php 时出现 500 内部错误

mysql - 使用两个 CREATE TABLE 命令并输出一个 ALTER TABLE 的脚本?