php


[PHP] PHP 에서 move_uploaded_file 실패하는 경우


PHP 에서 move_uploaded_file 을 사용해서 서버에 파일업로드를 하려고 할 때, 기존에 이미 설정한 폴더가 아닌 새로운 폴더에 업로드 하고자하면 파일 업로드가 안되곤 합니다.

이 경우, 파일용량 제한때문이 아니라면 주로 리눅스 서버에서 해당 폴더의 권한이 제대로 설정되어 있지 않을 확률이 높습니다.


FTP 등이 아닌 웹 환경에서 파일업로드를 해야하는 경우, 사용자 본인이 아닌 아파치에게 쓰기 권한이 설정되어있어야 합니다.




서버에서 원하는 폴더에 권한을 757 (rwxr-xrwx) 로 설정해주거나,


Bash(CentOS)

[root@ upload_dir]# chmod 757 mingcho[디렉토리경로]


사용하는 툴에서 CHMOD 기능이 있는 경우 변경해주면 됩니다.



물론 변경 후에는 기타사용자에게 쓰기 권한이 주어지기 때문에, 무분별한 파일이 업로드 되지 않도록 확장자검사, 특수문자검사 등의 방어조치를 취해야합니다.


마지막으로 변경된 폴더로 업로드 해봅시다아.

사실은 move_uploaded_file 함수는 업로드개념보다는 함수명그대로 서버의 tmp 폴더 내부에 임시로 저장된 파일을 내가 원하는 경로로 이동시키는 함수입니다.


PHP

<?php define("UPLOAD_PATH", "/images/"); $tmp_name = $_FILES["name_attr"]["tmp_name"]; //임시저장된 파일을 $target = UPLOAD_PATH.time().$_FILES["name_attr"]["name"]; // /images/1210123112upload_file.jpg move_uploaded_file($tmp_name, $target); //저장 찰칵찰칵 ?>




php


[PHP] PHP 문자열 큰따옴표(") 와 작은따옴표(') 의 차이점



PHP 에서 문자열 작성시에는 아래와 같이 큰따옴표("") 나, 작은따옴표('')를 사용하여 표현합니다.


<?php $a = "double quote"; $b = 'single quote'; ?>


무분별하게 사용하기도 하지만 문자열사용시 큰따옴표("") 와 작은따옴표('')를 사용하는 것은 PHP 내부적으로 차이가 있습니다.





PHP는 문자열을 다룰 때 큰따옴표 안의 문자열의 경우 변수를 찾아내는 과정을 거칩니다.

반면, 작은 따옴표 안의 문자열의 경우 순수 문자열로 인식하여 그대로 보여주게 됩니다.


<?php $text = " 입니다"; echo "double quote $text"; //실행결과 : double quote 입니다. echo 'single quote $text'; //실행결과 : single quote $text ?>


위 예제의 경우 큰따옴표("") 안의 문자열에 사용한 변수는 변수의 값이 제대로 적용 된 데 반해, 작은따옴표('') 안의 변수는 그대로가 문자로 표현되었습니다.


큰따옴표("") 와 작은따옴표('') 의 차이는 변수의 처리 뿐만아니라 확장문자 의 처리에서도 존재합니다.

줄을 개행시켜주는 개행문자 \n 의 경우 큰따옴표안에서는 개행문자로 인식하지만, 작은 따옴표안해서는 일반 문자열로 인식됩니다.


<?php echo "double quote \n"; //실행결과 : double quote echo 'single quote \n'; //실행결과 : single quote \n ?>


위와 같이 작은따옴표 안에서는 대부분의 확장문자가 문자열로 인식되기때문에, 확장문자를 써야하는 경우 큰따옴표("")를 써야합니다.

단, 예외적으로 \' 나 \\ 의 경우 작은따옴표('') 안에서도 사용가능합니다.


<?php echo "사용가능 확장문자 \'"; //실행결과 : 사용가능 확장문자 \' echo '사용가능 확장문자 \''; //실행결과 : 사용가능 확장문자 ' ?>


위의 경우 큰따옴표("") 안에서는 \' 가 문자열로 처리된 반면, 작은따옴표('') 안에서는 확장문자로 처리되었습니다.

상황에 맞게 잘 사용하도록합시다!





EditPlus 기본 설정 정리



1. 문서의 기본 인코딩 변경



[도구->기본설정->파일->기본인코딩] or
[Tools->Preferences->Files->Default Encoding]






2. 백업파일 생성안되게 설정하기



[도구->기본설정->파일->저장시 백업 파일 생성] or
[Tools->Preferences->Files->Create backup file]






3. 기본으로 생성되는 새파일 문서 템플릿 변경



[파일->새파일->HTML페이지] 를 누르거나 Ctrl+Shift+N 을 누르면 나오는 새파일을 구조를 변경할 수 있다.

나와 같은경우 새파일 형식이 아래와 같이 기존 HTML4 의 DTD 선언 방식으로 되어있어서 변경하기로했다.



[도구->기본설정->파일->문서템플릿] or
[Tools->Preferences->Files->Templates]



위파일을 클릭하면 현재 Template 파일의 저장경로가 나온다.

해당폴더로 가서 원하는 이름의 .html 파일을 새로만든다. 나는 template_html.html 로 만들었다.

변경 후 해당파일에 변경하고자 하는 템플릿 문서를 작성한다.


HTML(template_html.html)

<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>문서제목</title> </head> <body> </body> </html>


파일작성 후 다시 좀전의 위치로 돌아가 Template 파일을 우리가 만든 파일로 지정한다.




파일이름을 template* 로 시작하도록 만들지 않은경우에는 2번을 클릭하여 모든파일(All Files) 보기로 변경하여 파일선택하면 적용 끝!

적용완료 후 Ctrl+Shift+N 을 눌러 템플릿이 제대로 적용되었는지 확인!

마찬가지로 다른 확장자 파일의 템플릿도 지정할 수 있다.




+ Recent posts

티스토리 툴바