使用php上传文件时显示警告消息

使用php上传文件时显示警告消息,php,file-upload,Php,File Upload,我正在使用带有XAMPP的ubuntu操作系统。在这里,我创建了两个文件uploader.php和phpEx6.php 当我尝试上传一个文件时,它会显示警告消息。我是php新手。请帮助解决这个问题 phpEx6.php <html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select

我正在使用带有XAMPP的ubuntu操作系统。在这里,我创建了两个文件uploader.php和phpEx6.php 当我尝试上传一个文件时,它会显示警告消息。我是php新手。请帮助解决这个问题

phpEx6.php

<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="uploader.php" method="post" enctype="multipart/form-   data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

文件上载表格
文件上载:
选择要上载的文件:

uploader.php

<?php
if( $_FILES['file']['name'] != "" )
{
   error_reporting(E_ALL);
move_uploaded_file($_FILES['file']['tmp_name'],     $_SERVER['DOCUMENT_ROOT'] . '/opt/lampp/htdocs/xampp/nf/uploads/' $_FILES['file']['name'])
or die("Couldn't copy the file.");

}
else
{
    die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>enter code here
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name'];  ?>
<li>File size: <?php echo $_FILES['file']['size'];  ?> bytes
<li>File type: <?php echo $_FILES['file']['type'];  ?>
</ul>
</body>
</html>

错误是关于,没有创建要将文件移动到的文件夹。。创建文件夹,然后重试,或者检查文件夹是否具有将文件上载到其中所需的所有权限。。
下面是上传文件的示例代码

if(isset($_POST['Submit']))
    {
        $tmp_name = $_FILES['Pic']['tmp_name'];
        $name = $_FILES['Pic']['name']; 

        if(is_uploaded_file($tmp_name))
        {
            $org_name = time()."_".$name;
            $dest = "uploads/$org_name";
            move_uploaded_file($tmp_name, $dest);
        }
    }
试着改变这个

move_uploaded_file($_FILES['file']['tmp_name'],     $_SERVER['DOCUMENT_ROOT'] . '/opt/lampp/htdocs/xampp/nf/uploads/'. $_FILES['file']['name'])
用这个

move_uploaded_file($_FILES['file']['tmp_name'],     $_SERVER['DOCUMENT_ROOT'] . '/xampp/nf/uploads/'. $_FILES['file']['name'])
甚至这个

move_uploaded_file($_FILES['file']['tmp_name'],   '/opt/lampp/htdocs/xampp/nf/uploads/'. $_FILES['file']['name'])

您的问题可以有多个答案,如下所示:

  • 以点(.)开头的路径,例如“./opt/foldername/”
  • 创建要在其中插入文件和数据的文件夹并授予其写入权限
  • 或者你可以在移动上传之前这样做,只要先检查目录是否存在,如果它不是比使用mkdir函数和比chmod给写权限和比使用上传函数。检查目录是否存在总是一种更好的做法,而不仅仅是将文件移动到那里

  • @Peter Darmis

    听起来像是由于缺少文件系统权限而导致上载失败。Web服务器守护程序用户是否有权访问上载目录?另外:那是什么?!确保您尝试移动到的目录确实存在$\u服务器['DOCUMENT\u ROOT']/opt/lampp/htdocs/xampp/nf/uploads/'.$\u文件['file']['name']也许吧?我只需要知道如何将一个文件从一个目录上传到另一个目录,如果任何一个目录有简单的代码供初学者理解,请发布它…..在
    /opt/lampp/htdocs/opt/lampp/htdocs/xampp/nf/uploads/sam.txt中查找文件,而不是
    /opt/lampp/htdocs/xampp/nf/uploads/sam.txt
    。查看您的
    move\u upload\u file()
    方法。我有上载文件夹“/opt/lampp/htdocs/xampp/nf/uploads”您是否检查了该文件夹的权限。。通常在Linux中,它不会拥有所有的权限…很抱歉,路径“/opt/lampp/htdocs/xampp/nf/uploads/”和$_FILES['file']['name']之间缺少一个点,您在上面的代码中没有看到它。我在回答中更正了它。
    move_uploaded_file($_FILES['file']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/xampp/nf/uploads/'. $_FILES['file']['name'])