无法使用PHP上传文件

时间:2017-07-14 00:33:01

标签: php html css apache centos

我无法使用php将文件上传到运行httpd的CentOS 7服务器。

我已经搜遍过,但仍然无法弄清楚为什么我无法上传文件。 :(

以下是表格:

<div class="container">
    <div class="row">
        <div class="col-lg-4 col-lg-offset-4">
            <h2 class="section-heading text-white text-center">Private Upload Page</h2>
            <hr class="light">
            <form class="form-horizontal" role="form" action="upload.php" method="post" enctype="multipart/form-data">
              <div class="form-group">
              <span class="text-white">Select directory to upload to:</span><br>
              <input class="form-control" type="text" name="dir" value="/var/www/html/Private/uploads" style="width: 100%;"><br>
              <span class="text-white">Select file to upload:</span><br>
              <input class="form-control" type="file" name="fileToUpload" id="fileToUpload" style="width: 100%;"><br>
              <input class="form-control btn btn-primary" type="submit" value="Upload File" name="submit" >
            </form>
        </div>
    </div>
</div>

这是php文件:

<?php
// Check directory from form, otherwise use uploads folder in 
// /var/www/html/Private
if(isset($_POST["dir"])) {
    $target_dir = $_POST["dir"];
    echo "<p>Using " . $target_dir . " for directory.</p><br>";
}
else {
    $target_dir = "/var/www/html/Private/uploads/";
    echo "<p>Using /var/www/html/Private/uploads for directory.</p><br>";
}

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
    echo "Sorry, there was an error uploading your file.";
    }
}
?>

我尝试过设置:

chmod 777 /var/www/html

chmod 777 /var/www

以及在php.ini文件中打开文件写入

以及关闭防火墙,我仍然无法上传文件。

我对网页设计很新,所以我确定这是我造成的问题。我查看的每个页面都指向了权限,但即使允许777仍然无法解决我的问题。

3 个答案:

答案 0 :(得分:0)

您的代码看起来不错。您是否在file_uploads = On上启用了php.ini?如果不搜索file_uploads directive并将其设置为开启。

答案 1 :(得分:0)

您应该将根目录(即指定目录存在/将要创建的目录)添加到输入的目录名称中。

还要确保使用客户端或服务器端验证有一个尾部斜杠,因为用户可能忘记输入它。

答案 2 :(得分:0)

 <form class="" id="add_downloadble" method="post" enctype="multipart/form-data" name="upload" >
                    <div class="control-group">
                        <label class="control-label" for="inputEmail">File:</label>
                        <div class="form-group">


            <input name="uploaded_file"  class="form-control" id="fileInput" type="file" required>

                            <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
                            <input type="hidden" name="id" value="<?php echo $session_id ?>"/>
                        </div>
                    </div>
                    <div class="form-group">

                        <div class="controls">
                            <input type="text" name="name" Placeholder="File Name"  class="form-control" required>
                        </div>
                    </div>
                    <div class="form-group">

                        <div class="controls">
                            <input type="text" name="desc" Placeholder="Description"  class="form-control" required>
                        </div>
                    </div>


                  <script>
                  jQuery(document).ready(function($){                        
                      e.preventDefault();
                      var _this = $(e.target);
                      var formData = new FormData($(this)[0]);
                      $.ajax({
                        type: "POST",
                        url: "save.php",
                        data: formData,
                        success: function(html){                              
                          window.location = 'tambah_materi.php';
                        },
                        cache: false,
                        contentType: false,
                        processData: false
                      });
                    });
                  });
                  </script> 


              </div>
              <div class="col-sm-6">

            <div class="alert alert-info">Centang kelas yang ingin di tambahkan file ini.</div>

                        <div class="pull-left">
                    Check All <input type="checkbox"  name="selectAll" id="checkAll" />
                      <script>
                      $("#checkAll").click(function () {
                        $('input:checkbox').not(this).prop('checked', this.checked);
                      });
                      </script>         
                    </div>
                            <table cellpadding="0" cellspacing="0" border="0" class="table" id="">

                          <thead>
                                  <tr>
                              <th></th>
                              <th>Nama Kelas</th>
                              <th>Subject Code</th>
                              </tr>

                          </thead>
                          <tbody>

                                      <?php $query = mysql_query("select * from teacher_class
                          LEFT JOIN class ON class.class_id = teacher_class.class_id
                          LEFT JOIN subject ON subject.subject_id = teacher_class.subject_id
                          where teacher_id = '$session_id' and school_year = '$school_year' ")or die(mysql_error());
                          $count = mysql_num_rows($query);


                          while($row = mysql_fetch_array($query)){
                          $id = $row['teacher_class_id'];

                          ?>                             
                          <tr id="del<?php echo $id; ?>">
                            <td width="30">
                              <input id="" class="" name="selector[]" type="checkbox" value="<?php echo $id; ?>">
                            </td>
                            <td><?php echo $row['class_name']; ?></td>
                            <td><?php echo $row['subject_code']; ?></td>                                                                   
                          </tr>

                  <?php } ?>



                </tbody>
              </table>


                            </div>
            <div class="col-sm-12">
            <hr>
              <center>
              <div class="control-group">
                    <div class="controls">
                      <button name="Upload" type="submit" value="Upload" class="btn btn-success" /><i class="icon-upload-alt"></i>&nbsp;Upload</button>
                    </div>
              </div>
              </center>

               </form>    

save.php文件

        include('../session.php');
        //Include database connection details
        include("../dbConnector.php"); 
        $connector = new DbConnector();

        $errmsg_arr = array();
        //Validation error flag
        $errflag = false;

        $uploaded_by_query = mysql_query("select * from teacher where teacher_id = '$session_id'")or die(mysql_error());
        $uploaded_by_query_row = mysql_fetch_array($uploaded_by_query);
        $uploaded_by = $uploaded_by_query_row['firstname']."".$uploaded_by_query_row['lastname'];

        /* $id_class=$_POST['id_class']; */
        $name=$_POST['name'];





        //Function to sanitize values received from the form. Prevents SQL injection
        function clean($str) {
            $str = @trim($str);
            if (get_magic_quotes_gpc()) {
                $str = stripslashes($str);
            }
            return mysql_real_escape_string($str);
        }

        //Sanitize the POST values
        $filedesc = clean($_POST['desc']);
        //$subject= clean($_POST['upname']);

        if ($filedesc == '') {
            $errmsg_arr[] = ' file diskripsi belum di isi';
            $errflag = true;
        }

        if ($_FILES['uploaded_file']['size'] >= 1048576 * 5) {
            $errmsg_arr[] = 'file selected exceeds 5MB size limit';
            $errflag = true;
        }


        //If there are input validations, redirect back to the registration form
        if ($errflag) {
            $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
            session_write_close();
            ?>

           <script>
           window.location = 'downloadable.php<?php echo '?id='.$get_id;  ?>';
           </script>
           <?php exit();
        }
        //upload random name/number
        $rd2 = mt_rand(1000, 9999) . "_File";

        //Check that we have a file
        if ((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
            //Check if the file is JPEG image and it's size is less than 350Kb
            $filename = basename($_FILES['uploaded_file']['name']);

            $ext = substr($filename, strrpos($filename, '.') + 1);

            if (($ext != "exe") && ($_FILES["uploaded_file"]["type"] != "application/x-msdownload")) {
                //Determine the path to which we want to save this file      
                //$newname = dirname(__FILE__).'/upload/'.$filename;
                $newname = "../admin/uploads/" . $rd2 . "_" . $filename;
                $name_notification  = 'Add Downloadable Materials file name'." ".'<b>'.$name.'</b>';
                //Check if the file with the same name is already exists on the server
                if (!file_exists($newname)) {
                    //Attempt to move the uploaded file to it's new place
                    if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $newname))) {
                        //successful upload
                        // echo "It's done! The file has been saved as: ".$newname;        

                                    $id=$_POST['selector'];
                                                    $N = count($id);
                                                    for($i=0; $i < $N; $i++)
                                                    {           

                       /*  $qry2 = "INSERT INTO files (fdesc,floc,fdatein,teacher_id,class_id,fname,uploaded_by) VALUES ('$filedesc','$newname',NOW(),'$session_id','$id[$i]','$name','$uploaded_by')"; */
                        mysql_query("INSERT INTO files (fdesc,floc,fdatein,teacher_id,class_id,fname,uploaded_by) VALUES ('$filedesc','$newname',NOW(),'$session_id','$id[$i]','$name','$uploaded_by')");
                        mysql_query("insert into notification (teacher_class_id,notification,date_of_notification,link) value('$id[$i]','$name_notification',NOW(),'downloadable_student.php')")or die(mysql_error());

                      }

        }
        }
        }
        }

        /* mysql_close(); */
        ?>