我无法使用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仍然无法解决我的问题。
答案 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> 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(); */
?>