我正在将一个RSA私钥(.pem文件)上载到我的网站上,并使用fopen读取内容,但最近我不断地遇到同样的错误,没有什么意义。
HTML
Choose a file to upload:
上传文件
session_start();
if( $_SERVER['SERVER_PORT'] == 80) {
header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]);
die();
}
echo $_FILES['uploaded_file']['name'];
//Сheck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
$filename = basename($_FILES['uploaded_file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if (($ext == "pem") && ($_FILES["uploaded_file"]["type"] == "text/plain")) {
$fh = fopen($_FILES['uploaded_file']['name'], 'r');
//continue with code
} else {
echo "Error: Only pem files are accepted for upload";
}
} else {
echo "Error: No file uploaded";
}
?>
站点不断返回错误:
警告:fopen(mykey.pem)
[函数.fopen]:打开失败
流:中没有此类文件或目录
…在线38
(这是fopen line)。它进入fopen状态的事实向我证明,它实际上是上传的,但使用fopen(也尝试使用file_get_contents($_files['uploaded_file'][名称])以及unsuccessfully)返回错误。
什么牌戏!
最后注:
无论出于什么原因,fopen()都不喜欢读取openssl证书并返回一个eror:
openssl_private_decrypt():提供
资源不是有效的openssl
X.509/关键资源
但是,如果您使用文件获取内容,它会起作用。