php - XAMPP centos 通过 PHP 上传的文件不显示

标签 php centos xampp

我在 Centos 7 专用机器上运行 xampp 5.6.8。 我开发了简单的脚本来通过机器上的 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>

当我发送示例文件时回显返回:

File sample.txt - /opt/lampp/temp/phpD58n0L - uploaded successfully.

一些信息和事实:

  • 当我打开 xamppdaemon 用户运行时
  • /opt/lampp/temp/ 目录属于 daemon:daemon 通过 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() 会在任何情况下进行检查。

关于php - XAMPP centos 通过 PHP 上传的文件不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099342/

相关文章:

php - 关于 Apache2 上的 SSL 设置

php - 全局 $wpdb 显示垃圾数据以及我的选择查询的结果

caching - 如何使用缓存快速重建 dockerfile?

linux - SSH 进入 AWS EC2 实例给出权限被拒绝(公钥)

javascript - 我似乎无法通过 xampp 的 ADMIN 按钮查看 mySQL 数据库

php - XAMPP 与 PostgreSQL 9

php - session 在新页面 View 中被破坏

php - 在 WooCommerce 订单项目的自定义 SQL 查询中使用产品 ID 而不是产品名称

linux - 在 CentOS 上安装 Maven 后找不到 mvn 命令

php - 在 Windows Server 2008 R2 上托管 php 应用程序