我正在使用OpenSSL来加密变量值并使用PHP exec函数但由于某种原因它不能通过PHP代码工作 .

$secret = '339e0asdadf5cdf77sdfsdfe24e52130a55dsdfdfsd1';
$buf = array();
$timestamp = date('Y-m-d H:i:s');

$cmd = 'echo "'.$timestamp.'" | openssl enc -aes-256-cbc -a -k '.$secret;
exec($cmd, $buf);
$timestamp = implode("\n", $buf);

echo 'TimeStampValue1: '.$timestamp.'<br><br>';
echo exec('echo Hello World!');
echo urlencode($timestamp).'<br>';

当我们执行命令时:

echo "2017-12-14 13:05:51" | openssl enc -aes-256-cbc -a -k 339e0asdadf5cdf77sdfsdfe24e52130a55dsdfdfsd1

在CMD上,它确实显示了加密值 . 请参见附件截图 . 但是,使用exec函数在PHP脚本上执行相同的命令时,它不起作用 .

我们已经确认:

在PHP配置文件中启用了

  • exec功能 .

  • 在PHP配置文件中启用了OpenSSL .

  • OpenSSL路径也在环境变量上设置 .

  • PHP错误日志未在代码中显示任何错误 . 我们的错误日志维护在c:/ windows / temp

不知道为什么这不起作用似乎仍然没有在使用IIS作为webserver的PHP.INI文件中正确配置 .