当与调用 gpg 加密文件的 exec() 命令结合使用时,我遇到了与 session_start() 命令的令人费解的冲突。
$output = exec("gpg --batch --passphrase asdf --symmetric --output ../files/test/uploads/smalltext.txt.gpg ../files/test/uploads/smalltext.txt 2>&1" ,$test);
print_r($test);
exit;
上面的代码将起作用
session_start();
$output = exec("gpg --batch --passphrase asdf --symmetric --output ../files/test/uploads/smalltext.txt.gpg ../files/test/uploads/smalltext.txt 2>&1" ,$test);
print_r($test);
exit;
此代码不起作用,它会声明
gpg:无法打开 ../files/test/uploads/smalltext.txt
gpg:../files/test/uploads/smalltext.txt 的对称加密失败:没有这样的文件或目录
目前我唯一的解决方法是调用 session_destroy(); 并设置 $_SESSION = array(); 因此重置它,调用 exec,然后重新设置我的所有会话信息。