$_SESSION에 그냥 string을 저장하는 것은 쉽다.

$_SESSION['var_name'] = "value"; 로 하면 되니까.

하지만 class의 경우에는 이게 쉽지 않다 -_-;

$_SESSION['var_name'] = new MyClass();

라고 하면 저장이 잘 된것 같아보이지만.. 새로고침을 하고 var_dump($_SESSION['var_name]);를 해보면?

Case 1) __PHP_Incomplete_Class Name

          -> Class의 정의를 session_start() 하기 전에 포함시킨다(include를 하든 뭘 하든).

Case 2) null

          -> class MyClass implements Serializable { /* ... */ public function serialize(){/*...*/} public function unserialize($data){/*...*/} }

             처럼 Serializable 를 상속한 다음, [un]serialize 메소드를 구현한다 (좋은 링크).

(주의: 케이스를 나눠놓았지만 사실 둘 다 해야합니다!)

왜 이래야 하냐면, $_SESSION 안의 Object는 자동으로 각 페이지가 끝날 때 serialize()되어 세션에 저장되고, 각 페이지가 로드될 때 다시 unserialize() 되기 때문이다!

php에서 ldap_bind()를 써서 코딩하려고 했는데,
하...
LDAP가 안 된다 ㅠㅠ ldap_bind만 하면 에러..

 ldap_bind(): Unable to bind to server: Can't contact LDAP server in ...

ldapsearch 유틸로는 잘 되는데 이건 안돌아가서 멘탈붕괴가 시작되던 찰나,
아 설마.. 하고 php를 명령줄에서 실행했더니 결과가 정상..

 $ php ldap_test.php
   true

결국 apache가 실행하면 안되는거였다 ㅠㅠ
이걸 해결하기 위해서는 httpd가 network 접속을 수행할 수 있도록 selinux 설정을 변경해야 한다.

 # setsebool -P httpd_can_network_connect=1 


$ sed 's/asdf/qwer/g' a.txt
qwerqwerqwerqwerqwer...(생략)

위의 커맨드처럼 sed를 파일에 대해 그냥 사용하면 결과가 다시 파일에 써지는 것이 아니라, stdout으로 출력된다 -_-
그래서 "아! 리다이렉션을 사용하면 되겠구나" 하고 다음 커맨드를 입력하면(절대 안됩니다 절대)..

 시도: $ sed 's/asdf/qwer/g' a.txt > a.txt

 결과: $ ls -l
        -rw-rw-r--. 1 kcy1019 kcy1019 0  2월  2 12:12

절대 하면 안됩니다... 절대로..
이럴 땐 그냥 아래처럼 하면 여러모로 안전하고 편리하게 할 수 있습니다.

$ sed -i.bak 's/asdf/qwer/g' a.txt
$ ls -l
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt
-rw-rw-r--. 1 kcy1019 kcy1019 100  2월  2 12:12 a.txt.bak

참고: http://stackoverflow.com/questions/5171901/sed-command-find-and-replace-in-file-and-overwrite-file-doesnt-work-it-empties