รบกวนผู้รู้ใจดี ช่วยดูให้หน่อยได้มั้ยคะ ว่าผิดตรงไหนของโค้ด :)

มันขึ้นแบบนี้ค่ะ เราแก้ยังไงก็ไม่ได้
Warning: move_uploaded_file(doc/1-WhatsApp Image 2023-02-28 at 02.04.40.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\subconinfo\user\save_subcon.php on line 38

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php220D.tmp' to 'doc/1-WhatsApp Image 2023-02-28 at 02.04.40.jpg' in C:\xampp\htdocs\subconinfo\user\save_subcon.php on line 38

ส่วนนี้คือโค้ดเต็มค่ะ
<?php
//check if form is submitted
if (isset($_POST['submit']))
{
   include "config.php";
    $name = $_POST['fname'];
    $notel = $_POST['notel'];
    $nmasyarikat = $_POST['nmasya'];
    $nopendsya = $_POST['pendsya'];
    $lokasi1=implode(' ',$_POST['lokasi']);
    $skop1=implode(' ',$_POST['sk']);
    $nota = $_POST['nota'];
    $kmhr1=implode(' , ',$_POST['kmhr']);
    $filename = $_FILES['filename']['name'];
    //upload file
    if($filename != '')
    {
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        $allowed = ['pdf', 'txt', 'doc', 'docx', 'png', 'jpg', 'jpeg',  'gif', 'excel', 'mp4'];
    
        //check if file type is valid
        if (in_array($ext, $allowed))
        {
            // get last record id
            $sql = 'select max(id) as id from information';
            $query_sql = mysqli_query($link, $sql);
            if (count($query_sql) > 0)
            {
                $row = mysqli_fetch_array($query_sql);
                $filename = ($row['id']+1) . '-' . $filename;
            }
            else
                $filename = '1' . '-' . $filename;
            //set target directory
            $path = 'doc/';
            move_uploaded_file($_FILES['filename']['tmp_name'],($path . $filename));
            
            // insert file details into database
            $sql = "INSERT INTO information(id,name,notel,nmasyarikat,nopendsya,lokasi,skop,pekerja,kemahiran,document) 
            VALUES(NULL,'$name','$notel','$nmasyarikat','$nopendsya','$lokasi1','$skop1','$kmhr1','$filename')";
            $query_sql=mysqli_query($link,$sql);
            if($query_sql){
               //noti after submit and go to main page
               echo "<script>
               window.location.href='subcon.php';
               alert('Matlumat anda telah disimpan. Terima Kasih');
               </script>";
            }
            else{
               echo mysqli_connect_error($link);
               echo'<script>alert("Failed To Insert")</script>';
            }
        }
        else
        {
            header("Location: subcon.php?st=error");
        }
    }
    else
        header("Location: subcon.php");
}
?>
รบกวนหน่อยนะคะ ขอบคุณมากๆค่ะ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
พบว่ามีปัญหาในการอัพโหลดไฟล์ มีคำเตือนเกี่ยวกับ move_uploaded_file ที่บอกว่าไม่สามารถเปิดไฟล์หรือไม่มีไดเร็กทอรี่นั้นๆ ในตำแหน่งที่กำหนดไว้ได้

ตรวจสอบว่าไดเร็กทอรี่ "doc/" มีอยู่จริงในที่กำหนดหรือไม่ หากไม่มี ให้สร้างไดเร็กทอรี่ "doc/" ในโฟลเดอร์ที่เหมาะสมก่อน หลังจากนั้นลองเรียกใช้ฟังก์ชั่น move_uploaded_file() อีกครั้ง

นอกจากนี้ ควรตรวจสอบว่าชื่อไฟล์ที่อัปโหลดมาไม่มีชื่อเดียวกันกับไฟล์ใดๆ ที่อยู่ในโฟลเดอร์ "doc/" ก่อน โดยเช็คชื่อไฟล์เต็มก่อนแล้วเลือกใช้ชื่อไฟล์ใหม่ที่ไม่ซ้ำกัน เช่น ใช้เลขไอดีของข้อมูลล่าสุด + 1 เป็นต้น

นอกจากนี้ ยังตรวจสอบสิทธิ์ในการเขียนและอ่านไฟล์ของโฟลเดอร์ "doc/" ว่าสามารถเขียนได้หรือไม่ โดยตรวจสอบจากสิทธิ์ที่กำหนดในระบบปฏิบัติการของเซิร์ฟเวอร์ที่รันโปรแกรม

โดยทั่วไปแล้ว โฟลเดอร์ในระบบปฏิบัติการ Windows มักจะมีสิทธิ์เขียนและอ่านไฟล์ต่อเนื่องเมื่อมีการสร้างขึ้นมา แต่ถ้าใช้ระบบปฏิบัติการอื่นๆ อาจต้องตั้งค่าสิทธิ์เองก่อนใช้งานได้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่