使用exec()和PHP运行命令

时间:2015-04-25 05:45:14

标签: php openssl

我正在尝试通过php运行一个openssl命令,它通常运行正常,但是我正在尝试运行一个特定的命令,但它不起作用。

这是手动运行的命令,完美运行:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout keyfile.key -out requestfile.csr

例如,这是一个PHP的openssl,可以工作:

exec('C:/xampp/apache/bin/openssl ecparam -out keyfile.key -name prime256v1 -genkey');

通过PHP的相同命令不起作用..

exec('C:/xampp/apache/bin/openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \'/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com\' -keyout keyfile.key -out requestfile.csr');

我认为双引号中的部分有问题" / C ="可能无法正确解释。如果我通过PHP进行类似的openssl调用而没有""命令执行正常。

希望知识渊博的php人员检查其传递是否正确

请不要建议我使用PHP内置的openssl库,我很清楚它们,我有所有的工作在不同的项目,但我需要使用exec()来创建ECC密钥在PHP内置的openssl库中不可用。

1 个答案:

答案 0 :(得分:0)

我不认为Windows cmd.exe允许您使用单引号引用参数,您必须使用双引号。

exec('C:/xampp/apache/bin/openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout keyfile.key -out requestfile.csr');