이 블로그 검색
2012년 10월 12일 금요일
페도라 나눔폰트 설치
[root@localhost ~]# vi /etc/yum.repos.d/fedora.repo
아래 내용 추가
[dev.naver.com]
name=dev.naver.com
baseurl=http://dev.naver.com/repos/rpm/
gpgcheck=0
enabled=1
[root@localhost ~]# yum clean all
[root@localhost ~]# yum install -y ttf-nanum.noarch
[root@localhost ~]# yum install -y ttf-nanum-coding.noarch
mysqli에서 인코딩 설정
데이터베이스에서 PHP가 자료를 가져올 때 이해하는 인코딩을 설정해줘야 하는 듯하다.
DB에 UTF8로 데이터가 저장돼있다고 가정하자.
DB에 접속한 뒤 PHP에서 인코딩 설정을 해 주지 않으면,
PHP는 DB에 입력된 자료가 latin1이라고 이해한다.(PHP Version 5.2.6 이다.)
따라서 PHP한테 말해줘야 한다. “네가 가져온 데이터는 UTF8로 돼있는 거야!” 하고 말이다.
코드는 다음과 같다.
이렇게 하면 깔끔하게 가져올 수 있다.
참고 : http://www.php.net/manual/kr/mysqli.set-charset.php
출처 : 녹풍님 블로그 http://mytory.co.kr/archives/5
DB에 UTF8로 데이터가 저장돼있다고 가정하자.
DB에 접속한 뒤 PHP에서 인코딩 설정을 해 주지 않으면,
PHP는 DB에 입력된 자료가 latin1이라고 이해한다.(PHP Version 5.2.6 이다.)
따라서 PHP한테 말해줘야 한다. “네가 가져온 데이터는 UTF8로 돼있는 거야!” 하고 말이다.
코드는 다음과 같다.
$db = new mysqli( 'localhost' , 'DB아이디' , 'DB비밀번호' , 'DB이름' ); if (mysqli_connect_errno()){ echo "error 났음!" ; //여기엔 당연히 에러 났을 때 처리를 적어 줘야 할 것이다. 지금은 생략한다. } //여기부터가 인코딩 세팅 부분이다. 코드는 PHP홈페이지에서 가져와 사용했다. //주의할 점은 utf-8이 아니라 utf8로 적어야 한다는 점이다.(euc-kr도 euckr로 적어야 합니다.) if ( ! $db ->set_charset( "utf8" ) ) { printf( "utf8 문자 세트를 가져오다가 에러가 났습니다 : %s\n" , $db ->error); } else { printf( "현재 문자 세트 : %s\n" , $db ->character_set_name()); //위 코드를 분석해 보면 알겠지만, character_set_name()은 PHP가 DB 인코딩을 뭘로 이해하고 있는지 가져오는 메서드다. } |
참고 : http://www.php.net/manual/kr/mysqli.set-charset.php
출처 : 녹풍님 블로그 http://mytory.co.kr/archives/5
페도라 GPG KEY 에러시
1.우선 yum 실행시 에러가 나는 메시지에서 파일명을 확인
ex)
Invalid GPG Key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-13-i386: No key found in given key data
2. http://rpmfusion.org/keys 에서 버젼에 맞는 파일을 다운 받는다.
일치 하는 파일명이 있는지 확인
ex)
RPM-GPG-KEY-rpmfusion-free-fedora-13-i386 다운 받음
3.다운 받은 파일을 /etc/pki/rpm-gpg/ 에 복사
4.rpm 데이터베이스에 public키를 등록한다.
rpm --import /etc/pki/rpm-gpg/*
5.yum 실행한다.
ex)
Invalid GPG Key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-13-i386: No key found in given key data
2. http://rpmfusion.org/keys 에서 버젼에 맞는 파일을 다운 받는다.
일치 하는 파일명이 있는지 확인
ex)
RPM-GPG-KEY-rpmfusion-free-fedora-13-i386 다운 받음
3.다운 받은 파일을 /etc/pki/rpm-gpg/ 에 복사
4.rpm 데이터베이스에 public키를 등록한다.
rpm --import /etc/pki/rpm-gpg/*
5.yum 실행한다.
2012년 2월 17일 금요일
/etc/resolv.conf 옵션
/etc/resolv.conf 는 해당 호스트에서
인터넷상의 도메인을 찾아갈때 도메인주소로 질의하면 ip 주소로 반환해주는
dns 서버를 지정해주는 설정 파일입니다.
그런데 매번 dns 서버에 질의를 해서 받아오게 좀 번거롭다 싶어서
자주쓰는 ip는 직접 가지고 있는 파일이 /etc/hosts 입니다.
먼저 /etc/hosts 에서 해당 도메인의 ip를 확인해보고 없는경우
resolv.conf 에 지정된 dns 서버로 도메인네임을 물어봅니다..
resolv.conf 에 지정된 dns 서버가 ip주소를 제대로 알려주면
해당 홈페이지가 보여지겠지요..
인터넷상의 도메인을 찾아갈때 도메인주소로 질의하면 ip 주소로 반환해주는
dns 서버를 지정해주는 설정 파일입니다.
그런데 매번 dns 서버에 질의를 해서 받아오게 좀 번거롭다 싶어서
자주쓰는 ip는 직접 가지고 있는 파일이 /etc/hosts 입니다.
먼저 /etc/hosts 에서 해당 도메인의 ip를 확인해보고 없는경우
resolv.conf 에 지정된 dns 서버로 도메인네임을 물어봅니다..
resolv.conf 에 지정된 dns 서버가 ip주소를 제대로 알려주면
해당 홈페이지가 보여지겠지요..
[ 리졸버란 ? ] 리졸버는 DNS 의 클라이언트이다. 호스트 정보를 구하는 프로그램의 요청을 네임 서버에 대한 질의 형태로 변역하고그질의에 대한 응답을 프로그램에게 적절한 형태로 변경하는 역활을 한다. [ reslov.conf 에 적용되는 지시자의 종류 및 설명 ] domain 지시자 search 지시자 nameserver 지시자 sortlist 지시자 options 지시자 1. domain 지시자 기본도메인을 설정한다. 만약 domain 지시자를 이용해서 기본 도메인을 설정하였다면 호스트네임을 보고기본 도메인 을 결정하는것이 아니라 resolv.conf 파일에있는 domain 지시자에 설정된도메인을 기본도메 인으로 가지게된다. 즉 호스트네임보다는 resolv.conf 의 domain 지시자에게 정의된 기본 도 메인이 우선한다는 의미이다. 간단한 설정방법.. vi /etc/reslov.conf domain www.angelsoma.com 이렇게 domain 지시자를 이용해 간단히 정의할수있다. 2. search 지시자 이 역시 domain 지시자와 같이 기본 도메인을 설정하는 기능을가진다. 이 지시자는 한 라인에 여러게의 도메인을 지정할수있다. vi /etc/resolv.conf search www.angelsoma.com soma.angelsoma.com angelsoma.com 도메인은 최소 1 개에서 최대 6 개까지 설정할수있으며, 첫번째 도메인이 기본도메인이 된 다. 주) 만약 reslov.conf 파일에 domain , search 지시자가 둘다 정의되어있다면 나중에있는 지 시자가 적용된다. 3. nameserver 지시자 이 지시자는 질의할 네임서버의 주소를 리졸버에게 알려주어 해당 네임서버를 사용할수있게 끔 한다. vi /etc/resolv.conf nameserver 210.123.254.123 이 설정은 리졸버가 210.123.254.123 네임서버를 사용하로고 정의한다. 이 지시자를 사용하여 최대 3 개의 네임서버를 설정할수있다. 이렇게 한개 이상의 네임서버를 설정하게 되면 리졸버의 행동에 영향을 준다. 리졸버가 질의를 보낼때 마다 네트워크 에러를 4 번 수신하게되면 리졸버는 호스트테이블을 이용하게된다. 시간초과가 아니라 에러인 경우이다. 시간초과일 경우에는 리졸버는 null 을 리턴할뿐 /etc/hosts 테이블을 참조하지않는다. 4. sortlist 지시자 이 지시자는 질의에대한 응답으로 하나이상의 IP 정보를 리턴할때 선호하는 네트워크와 서브 넷을 지정하여 리졸버가 여러개의 주소중 원하는 네트워크 IP 주소를 우선적으로 가지도록 설정한다. vi /etc/resolv.conf sortlist 210.233.12.150/255.255.255.0 이렇게 / 뒤에 서브넷을 설정할수있다. 5. option 지시자 이 지시자는 리졸버의 내부설정 두 가지를 변경할수 있도록한다. - debug 만약 리졸버를 컴파일할때 DEBUG를 정의하고 했을경우 이 지시자로인해 많은 디버깅정보를 볼수있다. - ndots search 리스트의 도메인들을 뒤에 덧붙이기 전에 리졸버가 입력받은 이름을 그래도탐색할수 있도록 압력받은 도메인 네임이 반드시 가져야하는 . 의 최소갯수이다. 6. 주석처리 리졸버는 달러기호 ($) 나 세미콜론 (;) 으로 시작되는 라인을 주석으로 인식한다 |
2012년 2월 15일 수요일
IIS PHP MSSQL 연동
간단요약
윈도우7 에서 설치 성공
설치파일 다운로드:
파일을 모아 놓았습니다.바이러스 검사 완료..
다운 ==> iis에서php_mssql연동_파일모음.zip
1) “ntwdblib.dll”이 Windows 디렉토리 아래 system32 에 복사
2) Microsoft SQL Server 2008 Native Client 설치
3) SQL Server Driver for PHP 1.1 설치
4)php.ini 에 수정/추가
extension=php_mssql.dll
extension=php_sqlsrv_53_nts_vc9.dll
상세내용)
PHP 5.2 Version 까지는 php_mssql.dll이 extension에 포함되어 있어 php.ini에서
extension=php_mssql.dll 만 추가하면 되었는데 --;
5.3 Version에서는 php_mssql.dll 확장도 없고 php_mssql.dll 을 확장에 넣은 후 php.ini 설정을 해도 제대로 동작하지 않는다. ..
이제 5.3 Version에서 MSSQL을 연동하기 위한 작업을 시작하자
먼저 “ntwdblib.dll”이 Windows 디렉토리 아래 system32에 있는지 확인하고 없으면 웹에서 구해서 넣는다.
다음으로 Microsoft SQL Server 2008 Native Client 를 설치해야 하는데 MSSQL Server가 Web Server, PHP와 동일한 서버에 설치되어 있다면 Pass ~
만약 MSSQL Server가 다른 PC에 설치되어 있다면 Microsoft SQL Server 2008 Native Client 를 설치해야 한다. 아래의 링크에서 다운받을 수 있다.
Microsoft SQL Server 2008 Native Client을 다운받은 후 실행하면 아래와 같은 다이얼로그 나타나고 실행 버튼을 누르면 설치가 진행된다.
다음 버튼을 클릭 !!!
다음 버튼을 클릭 !!!
다음 버튼을 클릭 !!!
이번엔 설치 버튼을 누르면 설치가 진행된다.
마침 버튼을 누르면 설치가 완료된다.
마지막으로 SQL Server Driver for PHP 1.1을 설치한다. 아래 링크에서 SQL Server Driver for PHP 1.1를 다운받는다.
다운받은 파일을 설치한다. 실행 버튼을 클릭 !!!
라이센스에 동의하고 Yes 클릭
dll 파일들이 설치될 위치를 지정한다. PHP가 설치된 디렉토리 내의 ext 디렉토리를 지정하면 된다. OK를 누르면 dll들이 설치된다.
PHP 설치 디렉토리의 ext 디렉토리에 추가적으로 파일들이 설치된 것을 확인할 수 있다.
아래 화면이 나오면 설치가 제대로 된거라고 생각해도 된다. ^^:
마지막으로 php.ini에 마지막에 다음과 같이 MSSQL 설정을 추가한다.
마지막으로 Web Server를 종료 한 후 다시 실행시킨다.
아래는 테스트를 위한 PHP 코드이다. MSSQL에 Connection 했다가 바로 끊는 --;
제대로 실행이 않된다면 서버 설정이 잘못됐거나 PHP 설정이 잘못된 것이다.
Bug Fix는 알아서 해도 된다. ㅎㅎ
2012년 2월 9일 목요일
bind_result() 에서 out of memory 발생시
에러메시지:
Fatal error: Out of memory (allocated 262144) (tried to allocate 4294967294 bytes) in
bind_result() 에서 out of memory 발생 해결방법
1)php.ini
memory_limit 를 수정한다.
아니면
소스상단에 삽입
ini_set("memory_limit","64M");
(메모리 크기는 각자 적당히)
2)해당 테이블의 컬럼 타입 체크한다.
content 컬럼이 longtext
그래서 , cast 구문 사용
$stmt = $mysqli->prepare("SELECT title,CAST(content AS char(20000)) from after limit ?");
$stmt->bind_param("i",$limit_no);
$limit_no=10;
$stmt->execute();
echo memory_get_usage()."<br>";
/* 변수를 미리 준비된 문장에 결합, bind variables to prepared statement */
$stmt->bind_result(&$col1, &$col2);
참고)CAST
숫자만 들어있는 컬럼이 있는데, 정렬을 해 보니,
1
11
12
13
2
21
이런씩으로 정렬되는 경우를 본 적이 있을 것이다.
컬럼의 정의가 INT가 아닌 VARCHAR로 되어 있어서 그런 경우가 있다.
이 경우 어떻게 정렬하면 제대로 표현될까....
MySQL에는 (CAST)연산자라는게 있다.
cast type의 종류는
binary
char
signed (부호있는 숫자)
date
datetime
time
unsigned (부호없는 숫자)
등이 있다.
이용 방법은
정렬할 때에는
select * from customers order by cast(customers_id as unsigned);
문자를 숫자로 변환할 때에는
select cast('1' as unsigned) as test
select cast('1' as unsigned) as test
숫자를 문자로 변환할 때에는
select cast(2 as char(1)) as test
select cast(2 as char(1)) as test
피드 구독하기:
글 (Atom)