如何用exec()响应密码提示

时间:2010-09-14 13:51:56

标签: php air

我知道问题的标题有点奇怪。但我不知道我想做什么,被称为。所以,在这里 -

我正在开发一个简单的ADOBE AIR应用程序生成器,

生成所有必要文件并使用文件adt

签署应用程序之后

我应该 - 生成实际的.air文件。其中,在提供所有参数后要求输入密码。

我该怎么做?救命啊!

Packaging an AIR installation file using the AIR Developer Tool (ADT)

PS - 如果还有一些词来描述我在做什么,请评论:D

[UPDATE]

如果放一个

adt -package -storetype pkcs12 -keystore sampleCert.pfx HelloWorld.air HelloWorld-app.xml HelloWorld.html AIRAliases.js

在命令行中,它会提示输入密码。可以输入它 - 使用控制台时。

当你在做exec();时,你应该如何提供它?

3 个答案:

答案 0 :(得分:1)

我认为您需要使用proc_open而不是exec:http://us3.php.net/manual/en/function.proc-open.php根据示例,您可以执行以下操作:

$adt_command = "adt -package -storetype pkcs12 -keystore sampleCert.pfx HelloWorld.air HelloWorld-app.xml HelloWorld.html AIRAliases.js";
$password = "keystore_password";

$process = proc_open($adt_command, $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
    fwrite($pipes[0], $password);
    fclose($pipes[0]);
    $return_value = proc_close($process);
}

答案 1 :(得分:1)

显然,您可以在命令行上指定密码。查看their docs并在-storepass-keypass上查找。

  

-storepass password1 - 访问密钥库所需的密码。如果未指定,ADT会提示输入密码。

     

-keypass password2 - 访问用于对AIR应用程序进行签名的私钥所需的密码。如果未指定,ADT会提示输入密码。

您可以像这样构建所需的命令:

<?php
    $command = "/path/to/adt -package -storetype pkcs12 -storepass password -keypass password -keystore /path/to/sampleCert.pfx /path/to/HelloWorld.air /path/to/HelloWorld-app.xml /path/to/HelloWorld.html /path/to/AIRAliases.js";

    $output = exec($command);
?>

确保包含adt二进制文件的路径以及构建所需的文件。

答案 2 :(得分:0)

如果我理解正确,您想通过PHP ADP拨打exec()吗?

为了控制ADP等命令行工具的输入和输出,您可以查看proc_open - 函数,这样就可以处理输入,输出和错误管道。

有关这些的更多信息可以在PHP手册中获得here

相关问题