Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
在Linux中使用php';s执行函数_Php_Linux_Diff_Compare_Exec - Fatal编程技术网

在Linux中使用php';s执行函数

在Linux中使用php';s执行函数,php,linux,diff,compare,exec,Php,Linux,Diff,Compare,Exec,我必须比较两个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/o

我必须比较两个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\u word\u template/word/document.xml/var/local/out/upload/example\u word/word/document.xml>/var/local/out/patch.patch

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

PHP提供了一个您可能想尝试的解决方案

手册中的示例

请注意,diff仅在语法层面上,而在语义上,两者之间没有区别

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


PHP提供了一个您可能想尝试的解决方案

手册中的示例

请注意,diff仅在语法层面上,而在语义上,两者之间没有区别

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


尝试检查已执行命令的输出,可能运行apache的用户没有在该文件夹或其他文件夹中写入的权限…:

$output=array();$status=0;
exec($command,$output,$status);
var_dump($output);var_dump($status);

尝试检查已执行命令的输出,可能运行apache的用户没有在该文件夹或其他地方写入的权限…:

$output=array();$status=0;
exec($command,$output,$status);
var_dump($output);var_dump($status);

您希望像这样捕获输出

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

var_dump($output);
echo join("\n", $output);
你可以像这样重新组合这些线

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

var_dump($output);
echo join("\n", $output);

您希望像这样捕获输出

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

var_dump($output);
echo join("\n", $output);
你可以像这样重新组合这些线

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

var_dump($output);
echo join("\n", $output);

输出为“array(0){}int(1)”,我认为这是不允许的操作:)目标目录不存在,不可写,或者“diff”程序找不到/不可执行。@symcbean不能是“diff”程序找不到/不可执行”。因为他说它在控制台中工作@wilsonsilva在执行命令之前,您是否尝试过手动创建输出文件?类似于
文件内容('/var/local/out/patch.patch','');chmod('/var/local/out/patch.patch',0777)?不是真的..它应该已经创建了文件:)为了进行测试,请尝试将/var/local/out上的权限从命令行更改为0777,然后重试:)输出是“array(0){}int(1)”我认为它的操作是不允许的:)目标目录不存在,不可写或“diff”程序找不到/不可执行。@symcbean不能是“diff”程序找不到/不可执行”。因为他说它在控制台中工作@wilsonsilva在执行命令之前,您是否尝试过手动创建输出文件?类似于
文件内容('/var/local/out/patch.patch','');chmod('/var/local/out/patch.patch',0777)?不是真的..它应该已经创建了文件:)为了测试,请尝试从命令行将/var/local/out上的权限更改为0777,然后重试:)输出是“array(0){}”,我不知道它是什么意思。“我还是个Linux新手。@wilsonsilva在你的另一条评论中,你说返回的状态是
1
。这意味着有一个错误。您的路径是否指向存在的文件?是。如果我在linux中直接执行以下命令:“diff/var/local/out/upload/example\u word\u template/word/document.xml/var/local/out/upload/example\u word/word/document.xml>/var/local/out/patch.patch”将创建patch.patch文件。@wilsonsilva是否将该文件读入PHP?尝试使用
file\u get\u contents()
。我无法读取它,因为如果使用php脚本,则不会创建该文件。输出为“array(0){}”,我不知道它是什么意思。“我还是个Linux新手。@wilsonsilva在你的另一条评论中,你说返回的状态是
1
。这意味着有一个错误。您的路径是否指向存在的文件?是。如果我在linux中直接执行以下命令:“diff/var/local/out/upload/example\u word\u template/word/document.xml/var/local/out/upload/example\u word/word/document.xml>/var/local/out/patch.patch”将创建patch.patch文件。@wilsonsilva是否将该文件读入PHP?尝试使用
file\u get\u contents()
。我无法读取它,因为如果我使用php脚本,则不会创建该文件。