[PHP] #34 PHP 파일 업로드, 권한 설정, 복사/이동 완벽 정리

2025. 9. 7. 17:00·Programming/PHP
반응형

 

 

안녕하세요 토스트데브입니다.
이번 글에서는 PHP에서 파일을 업로드하고, 권한을 설정하며, 파일을 복사하거나 이동하는 방법까지 실무에 꼭 필요한 파일 시스템 처리 방법을 정리해보겠습니다.

웹 서비스에서 흔히 사용되는 기능들이므로 꼭 숙지해두세요!

 

 

🗂️ 1. 파일 업로드 처리

✅ HTML Form (multipart/form-data)

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="myfile">
  <input type="submit" value="업로드">
</form>

 

✅ PHP 업로드 처리 (upload.php)

if (isset($_FILES['myfile'])) {
    $tmp = $_FILES['myfile']['tmp_name'];
    $name = $_FILES['myfile']['name'];

    if (move_uploaded_file($tmp, "uploads/" . $name)) {
        echo "파일 업로드 성공!";
    } else {
        echo "업로드 실패!";
    }
}

📌 move_uploaded_file() 함수는 임시파일을 안전하게 이동시켜줍니다.

 

 

⚙️ 2. 파일 권한 설정 – chmod()

✅ 파일이나 폴더의 퍼미션 변경

chmod("uploads", 0755);       // 읽기/실행 권한
chmod("uploads/file.txt", 0644);  // 일반 파일 권장 권한

 

숫자 의미
7 읽기 + 쓰기 + 실행 (rwx)
6 읽기 + 쓰기 (rw-)
5 읽기 + 실행 (r-x)
4 읽기만 (r--)

📌 퍼미션 설정은 Linux/Unix 환경에서만 적용됩니다.

 

 

📄 3. 파일 복사 – copy()

copy("data/file.txt", "backup/file.txt");

📌 rename()은 파일 이동과 이름 변경 모두 가능합니다.

 

 

🧪 추가 유용 함수

함수명 설명
is_uploaded_file() 업로드된 파일인지 확인 (보안 목적)
unlink() 파일 삭제
file_exists() 파일 존재 여부 확인
chmod() 파일/디렉토리 퍼미션 변경
copy() 파일 복사
rename() 파일 이동 또는 이름 변경

 

 

💡 실전 팁

  • uploads/ 디렉토리는 쓰기 권한(예: 0755 또는 0777) 이 있어야 함
  • 사용자가 올린 파일은 반드시 확장자 및 MIME 타입 검증 후 저장 권장
  • 파일 이름은 충돌 방지를 위해 uniqid() 또는 날짜 기반으로 처리 추천
$newname = "uploads/" . date("Ymd_His") . "_" . $_FILES['myfile']['name'];

 

 

✅ 마무리

이번 글에서는 PHP에서 파일 업로드, 권한 설정, 파일 복사/이동까지 파일 시스템 관련 주요 기능을 정리해보았습니다.

파일과 디렉토리를 안정적으로 다루기 위해서는 보안 검증, 권한 관리, 경로 처리를 철저히 해야 합니다.

 

#PHP, #파일업로드, #move_uploaded_file, #chmod, #파일권한, #파일복사, #파일이동, #rename, #copy, #웹개발, #PHP기초

반응형
저작자표시 비영리 (새창열림)

'Programming > PHP' 카테고리의 다른 글

[PHP] #35 PHP 변수 상태 확인 및 디버깅 함수 정리: isset, empty, var_dump까지  (2) 2025.09.08
[PHP] #33 PHP 파일 함수 정리: 파일 읽기, 쓰기, 삭제까지 완벽 마스터!  (0) 2025.09.06
[PHP] #32 PHP DateTime 클래스 완전 정복: 날짜 계산, 차이, 포맷 변경까지  (4) 2025.09.05
[PHP] #31 PHP 날짜/시간 함수 완벽 정리: date, time, strtotime, mktime 총정리  (2) 2025.09.04
[PHP] #30 PHP 수학함수, PHP 수학 함수 심화편: 삼각함수부터 로그, 지수 함수까지  (6) 2025.09.03
'Programming/PHP' 카테고리의 다른 글
  • [PHP] #35 PHP 변수 상태 확인 및 디버깅 함수 정리: isset, empty, var_dump까지
  • [PHP] #33 PHP 파일 함수 정리: 파일 읽기, 쓰기, 삭제까지 완벽 마스터!
  • [PHP] #32 PHP DateTime 클래스 완전 정복: 날짜 계산, 차이, 포맷 변경까지
  • [PHP] #31 PHP 날짜/시간 함수 완벽 정리: date, time, strtotime, mktime 총정리
TOASTDEV
TOASTDEV
인스턴트 코딩 #토스트데브 #토스트뎁 #코딩공부 #개발입문
  • TOASTDEV
    토스트데브
    TOASTDEV
    • 분류 전체보기 (155)
      • 알쓸신잡 (47)
        • 코딩에 대하여 (13)
        • 컴퓨터에 대하여 (12)
        • IT 국내외 소식 (22)
      • Web Front (28)
        • HTML (10)
        • CSS (14)
        • JavaScript (4)
      • Programming (35)
        • PHP (35)
      • Database (12)
        • SQL (12)
        • MySQL (0)
      • Server (24)
        • Linux (24)
      • Review (9)
        • Overseas Trip (0)
        • Domestic Travel (0)
        • Product Use Review (4)
        • Football Sports Review (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Youtube Toastdev
    • Naver Blog
  • 공지사항

    • [유튜브] 유튜브 영상 업로드 안내
  • 인기 글

  • 태그

    서버입문
    컴퓨터기초
    웹프로그래밍
    프론트엔드기초
    php
    html기초
    웹개발기초
    SQL문법
    css기초
    php입문
    ubuntuserver
    SQL강의
    php문법
    리눅스기초
    데이터분석
    데이터베이스
    웹개발
    SQL기초
    php기초
    웹디자인기초
    ubuntu서버
    서버관리
    sql
    HTML
    PHP문자열
    서버보안
    웹개발입문
    프론트엔드
    코딩입문
    리눅스보안
  • 최근 댓글

  • 최근 글

  • 전체
    오늘
    어제
  • 반응형
  • hELLO· Designed By정상우.v4.10.3
TOASTDEV
[PHP] #34 PHP 파일 업로드, 권한 설정, 복사/이동 완벽 정리
상단으로

티스토리툴바