รูปไม่ไปเก็บตาม path ที่กำหนดตอนนำระบบขึ้นเทสที่ server
ได้ทำการ นำ code ขึ้นไปรันบน server จิงปรากฎว่า รูปไม่ยอมไปเก็บตาม path ที่กำหนด แต่รันใน localhost เครื่องตัวเองบันทึกปกติ รบกวนท่านสมาชิกทุกท่านช่วยตรวจสอบ code หน่อยครับ เพิ่มเติม ครับถ้า xampp ติดตั้งไว้ที่ D: จะมีผลด้วยไหมครับ เพราะ คอมที่ใช้เทส xampp ติดตั้งไว้ที่ C:
Code (PHP)
<!-- sweet alert js & css -->
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">
<!-- sweet alert js & css -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<?php
include('db_connect.php'); //ไฟล์เชื่อมต่อกับ database ที่เราได้สร้างไว้ก่อนหน้าน้ี
session_start();
date_default_timezone_set('asia/bangkok');
$date1 = date('Y-m-d H:i:s'); // ค่าตัวแปรวันที่
$idcard=$_POST['idcard']; // ค่าที่ได้รับจาก textbox idcard
$_SESSION['idcard'] = $idcard;
$username=$_POST['name']; // ค่าที่ได้รับจาก names
$_SESSION['username'] = $username;
$section=$_POST['section']; // ค่าที่ได้รับจาก section
$_SESSION['section'] = $section;
$status=$_POST['select']; // ค่าที่ได้รับจาก dropdown
$_SESSION['y'] = $status;
$code=$_POST['code']; // ค่าที่ได้รับจาก dropdown
$_SESSION['code'] = $code;
$comment=$_POST['txtcomment']; // ค่าที่ได้รับจาก txtDescription
$_SESSION['cm']= $comment;
$fileupload=$_FILES['fileupload']; //รับค่าไฟล์จากฟอร์ม
//echo " ".$_FILES["fileupload"]["name"]."<br>"; //แสดงค่า จาก fileupload
date_default_timezone_set('Asia/Bangkok');
$date = date('Ymd'); //ฟังก์ชั่นวันที่
$numrand = (mt_rand()); //ฟังก์ชั่นสุ่มตัวเลข
$upload=$_FILES['fileupload'];//เพิ่มไฟล์
if($upload <> '') { //not select file
$path="./images/"; //โฟลเดอร์ที่จะ upload file เข้าไป
$type = strrchr($_FILES['fileupload']['name'],"."); //เอาชื่อไฟล์เก่าออกให้เหลือแต่นามสกุล
//ตั้งชื่อไฟล์ใหม่โดยเอาเวลาไว้หน้าชื่อไฟล์เดิม
$newname = $date.$numrand.$type;
$path_copy=$path.$newname;
$path_link="fileupload/".$newname;
}
$sql = "SELECT * FROM tb_borrow WHERE idcard='".$_SESSION['idcard']." ' and updatestatus='ยืม' ";
//$query = $con->query($sql);
$query = mysqli_query( $con, $sql );
$num = mysqli_num_rows( $query ); // นับจำนวนแถวเพื่อเช็คค่าข้อมูล
$sql1 = "SELECT * FROM tb_device where name='".$_SESSION['code']."' and status='ไม่ว่าง' ";
$query1 = mysqli_query($con,$sql1);
$num1 = mysqli_num_rows($query1);
if($num == 0 && $num1 ==0){ // สร้างเงื่อนไข ที่1 ถ้า ข้อมูล query ออกมาเท่ากับ 0 กับ 0
move_uploaded_file($_FILES['fileupload']['tmp_name'],$path_copy); //คัดลอกไฟล์ไปเก็บที่เว็บเซริ์ฟเวอร์ใน folder ทีกำหนด
//insert ข้อมูลเข้าไปในตาราง tb_borrow
$sql2 = "INSERT INTO tb_borrow (time,time2,idcard,username,section,status,serial,comment,status1,updatestatus,fileupload)
VALUES ('$date1','-','$idcard','$username','$section','$status','$code','$comment','ยืม','ยืม','$newname')";
$query2 = $con->query($sql2);
//update ข้อมูลเข้าไปในตาราง tb_device เมื่อ id เท่ากับ ตัวแปร code
$sql3 = "UPDATE tb_device SET status = 'ไม่ว่าง' , comment='$status' WHERE name = '".$_SESSION['code']."' ";
$query3 = $con->query($sql3);
// sweetalert แจ้งเตือน popup กด ok ก่อน redirect ไป index.php
echo '<script>
setTimeout(function() {
swal.fire({
title: "บันทึกข้อมูลสำเร็จ",
// html: "<input type=\"button\" value=\"กรุณาคึนก่อน ?\">",
html: "message",
icon: "success"
}).then(function() {
window.location = "index.php";
});
}, 1000);
</script>';
}
else if ($num ==0 && $num1 ==1){ // สร้างเงื่อนไข ที่2 ถ้า ข้อมูล query ออกมาเท่ากับ 0 กับ 1
echo '<script>
setTimeout(function() {
swal.fire({
title: "อุปกรณ์ถูกยืมไปแล้ว",
// html: "<input type=\"button\" value=\"กรุณาคึนก่อน ?\">",
html: "message",
icon: "error"
}).then(function() {
window.location = "index.php";
});
}, 1000);
</script>';
}
else { // สร้างเงื่อนไข ที่3 ถ้า ข้อมูล query ออกมาเท่ากับ 1 กับ 1
echo '<script>
setTimeout(function() {
swal.fire({
title: "รหัสมีการใช้งานยืมไปแล้ว",
// html: "<input type=\"button\" value=\"กรุณาคึนก่อน ?\">",
html: "message",
icon: "error"
}).then(function() {
window.location = "index.php";
});
}, 1000);
</script>';
}
session_destroy();
mysqli_close($con);
?>
Tag : PHP
ประวัติการแก้ไข 2024-05-13 12:47:33
Date :
2024-05-13 11:30:17
By :
tharakorn.jin
View :
274
Reply :
8
echo $path_copy ออกมาดูบน server จริงว่ามันไปอยู่ที่ไหน
ทำตามลำดับ
Code (PHP)
echo $path_copy;
echo '<br>'."\n";
var_dump(realpath($path_copy));
exit();// ไม่ต้องทำงานต่อ
ประวัติการแก้ไข 2024-05-13 15:09:33
Date :
2024-05-13 15:08:56
By :
mr.v
แสดงว่า folder images ไม่มีหรือ permission เขียนไฟล์ไม่ได้
แก้ตรงนี้่้ก่อน
Date :
2024-05-13 17:14:43
By :
mr.v
ถ้าแก้ด้วย PHP ก็เพิ่มโค้ด
Code (PHP)
// $path = '...';// code เก่าตามข้างบน
if (!is_dir($path)) {
if (!mkdir($path, 0777, true)) {
throw new \Exception('Path is not exists and is unable to create folder. (' . $path . ')');
}
}
if (!is_writable($path)) {
if (!chmod($path, 0777)) {
throw new \Exception('Path is not wriable. (' . $path . ')');
}
}
Date :
2024-05-13 17:19:36
By :
mr.v
มันไม่เกี่ยวแล้วมั้งครับ ถ้าโค้ดไม่ได้ทำการ detect มือถือแยกไปทำงานอีกแบบมันก็ต้องทำงานด้วยโค้ดเดียวกันทั้งหมด.
คุณแยกแยะให้ออกก่อนดีกว่าว่าที่ผมให้ทดลองตรวจ permission นั่นน่ะ คือบน server จริงไม่ใช่ localhost เพราะหัวกระทู้คุณบอกเองว่ามีปัญหาบน server จริง
แล้ว URL ที่ใช้มันคืออะไรบนมือถือก็ต้องตรงกันไม่ใช่ไม่ตรงแล้วมาสรุปว่าบนมือถือทำงานอีกอย่าง แบบนี้มันไม่ใช่แล้ว
Date :
2024-05-13 23:37:30
By :
mr.v
ในหน้าที่รับค่า form submit
ทดสอบ
ให้ทำการ echo 'hello world'; ด้านบนสุด แล้ว exit(); ทันทีเลย
แล้วลองดูว่าบนมือถือกับคอมไปที่เดียวกันมั้ย ถ้ามันไปที่เดียวกันก็ต้องทำงานเหมือนกัน
ถ้าเอาตัวทดสอบข้างบนนี้ออก แล้วยังทำงานไม่เหมือนกันแสดงว่ามีปัญหากับ HTML, JS แล้ว
ถ้ามันไม่ไปที่เดียวกันแสดงว่าโค้ดมีการตรวจแยกทำงานมือถือกับคอมฯ
ประวัติการแก้ไข 2024-05-14 13:37:53
Date :
2024-05-14 13:36:43
By :
mr.v
Load balance : Server 05