YDG`s thoth

php 호스팅 서버에서 register_globals 설정하기

PHP 5 에서 작업을 하다보면

기본적으로 register_globals가 비활성화 되어 있다.


PHP.ini 에서 찾아볼수 있는데

PHP 5 부터는 기본적으로 off가 되어있고

이전 버전에서는 on이 되어있단 사실.

보안문제로 인해서 기본으로 off 해두었다는데...


여튼 PHP 5 코딩 가이드에 따라서

GET, POST, SESSION과 같은 녀석들을 참조하기 위해서

$_GET, $_POST, $_SESSION으로 접근하고

모든 코드를 작성하였다


그리고 호스팅서버의 PHP 버전을 확인하고 업로드 했건만....






머리터지게 많은 에러들.....

대략 3시간의 삽질 끝에

설마란 생각이 스쳐가면서 phpinfo()를 출력하였는데

아니나 다를까...

register_globalson이 되어 버린 사실...... ㅡㅡ


이거 나 혼자만 쓰는 서버도 아니고 해서

설정을 바꿔달라 하기도 그렇고...

그렇다고 코드를 다 수정하자니

엄청난 노가다를 해야한다는 두려움이 앞선다...


에러의 원인은 변수를 덮어쓰는 문제였다

$_GET['test']와 $_SESSION['test'] 와 같이

세션과 get 파라미터가 다른 값을 갖고 있지만

전역변수화 되면서

$test 라는 같은 공간에 덮어쓰면서 문제가 발생된것이다.

로긴도 되었다고 나왔지만

로긴은 안되어있고.... (참조변수가 달라지니... ㅡㅡ)


여튼 이때의 일은 한참 전의 일이라

덮어쓰는 순서를 테스트 해볼걸이란 후회도 있고

(아직 가능하지만 귀찮다;;)



잡설이 길어졌는데

여튼 나는 이것을 해결하기위해 열심히 구글링을 해본결과

내가 원하는 경우와 정반대의 경우가 많더라...


register_globals를 on 하기위한 방법들... (내가 이상한건가?? ㅡㅡ)


나의 경우는 버츄얼 호스트로 들어간 경우이니 특정 폴더에만 적용하는 방법을 찾다보니

.htaccess 파일을 사용하는 방법이 나오더라

사실 .htaccess는 xe나 다른 프레임워크에서 보긴 했었는데

설정된 것이 많지도 않았고 겨우 봤던게

deny all

정도였고 그래서 아파치 설정만 되는줄 알았다


그러나

php_flag register_globals off

이 한줄이 들어간 .htaccess파일을 해당 디렉토리에 넣어주니

아무 수정없이 잘 동작했다

굿~~!!!


Share
이 글과 관련된 글
  1. [2011/11/22] [PHP] 오픈소스 - 클래스 리파짓토리 by 곰이아빠 (645)
  2. [2011/08/13] Basic Syntax of Regular expressions by 스왕이 (0)
  3. [2011/07/11] [php] 스크랩 - 실수하기 쉬운것들 I by 곰이아빠 (1767)
  4. [2011/05/21] 고팀장님 특별과외 I - HTML by 곰이아빠 (2302, 1) *1
  5. [2011/05/21] PHP Fest 2011 참가 신청 완료 by 곰이아빠 (1970)

Categories

Public Voice

Trackbacks


You can also find us on the following sites : Premiumxe.com | Web Trend Awards | XpressEngine ver2

T-NAVI