微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XAMPP centos通过PHP上传的文件没有显示出来

我在Centos 7专用机器上运行xampp 5.6.8.
我开发了Simple脚本,通过机器上的 PHP将任何文件上传到服务器,PHP代码

<?PHP
if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {
   echo "File ". $_FILES['uploadfile']['name'].'-'.$_FILES['uploadfile']["tmp_name"]." - uploaded successfully.<br>";
   echo disk_free_space('/');
}
?>

<html>
<head>
    <title>test</title>
</head>
<body>
    <div style="text-align:center;">
        <form action="" method="post" enctype="multipart/form-data">
            <input name="uploadfile" type="file">
            <input name="sendfile" value="upload" type="submit">
        </form>
    </div>
</body>
</html>

当我发送一个样本文件时echo返回:

File sample.txt – /opt/lampp/temp/PHPD58n0L – uploaded successfully.

一些信息和事实:

>当我通过守护程序用户运行xampp时
> / opt / lampp / temp /目录属于daemon:daemon by chown命令
> / opt / lampp / temp /设置为770权限
> PHP.ini设置为允许文件最大为128mb,上传目录为/ opt / lampp / temp /

解决方法

使用is_uploaded_file()只检查它是否是上传文件.它不会从/ temp /目录移动它.您可能想查看 manual on POST uploads.示例:

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
    echo "File is valid,and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

也就是说,您应该使用move_uploaded_file()将上传移动到它所属的位置.否则,请参阅手册,解释为什么在/ temp /目录中找不到文件

The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.

功能is_uploaded_file()是对文件来源的安全检查,这就是它所做的一切.您可以将它与move_uploaded_file()一起使用,例如:

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
    if (move_uploaded_file($_FILES['userfile']['tmp_name'],$destination_file)) {
        // Was moved
    }
    else {
        // Wasn't moved
    }
else {
    // Wasn't valid
}

这可能是常规文件上传和移动的冗余,我在手册的注释中注意到,move_uploaded_file()在任何情况下都会进行检查.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。