从PHP调用bash脚本生成另一个脚本

问题描述:

我在写一个应用程序,它从用户的文本输入生成一个文本文件。将生成的文本文件作为输入的bash脚本应该生成另一个脚本作为输出。从PHP调用bash脚本生成另一个脚本

我尝试使用exec命令,但我不知道它是否工作。我想是这样的:

exec('generate.sh input.txt generated.sh'); 

generate.sh有两个输入端:

  1. input.txt文件 - 有从PHP页面(文字由 '\ n' 分隔)
  2. generated.sh用户输入 - 名生成的文件(由'generate.sh'生成)。

如何从PHP执行bash脚本以获得上述输出?

在此先感谢。

+1

generate.sh也需要用引号 – tubaguy50035 2012-08-14 14:33:49

整个参数给exec需要像这样的字符串:

exec('generate.sh input.txt generated.sh'); 
+0

我试过这个,但是它不生成脚本。 – Klone 2012-08-14 14:39:58

+0

是否正在运行generate.sh?你需要把它作为'('/path/to/generate.sh /path/to/input.txt /path/to/generated.sh')引用吗?或者它们是可执行文件的系统别名,脚本了解输入/输出的目录是什么?文件权限是否为可执行文件(已设置x位)以及输入/输出目录和文件设置正确? – 2012-08-14 14:49:01

+0

你说得对。我没有为所有文件设置x位。非常感谢。 – Klone 2012-08-14 15:31:44

$generate = '/path/to/generate.sh'; 
$input = '/path/to/input.txt'; 
$generated = '/path/to/generated.sh'; 

if(file_exists($generate)) 
{ 
    chmod($generate, 0755); 
    if(file_exists($input)) 
    { 
     exec($generate.' '.$input.' '.$generated); 
    } 
    else 
    { 
     echo "Input file not found: ".$input."<br />"; 
    } 
} 
else 
{ 
    echo "Generate file not found: ".$generate."<br />"; 
} 

此外,您也可以考虑系统(),了shell_exec(),中继()或proc_open()来执行外部命令。