본문으로 바로가기

가끔 phpMyAdmin에서 "Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly" 와 같은 에러 메세지가 뜨면서 접근 할 수 없는 경우가 발생한다.

이 문제는 클라이언트(브라우저)측의 쿠키(cookies) 문제이거나 서버측의 세션(session)파일이 저장되는 곳의 퍼미션(권한) 혹은 소유권(ownership)과 관련된 문제일 경우가 많다.

아래와 같은 에러가 발생했을 것이다.

phpMyAdmin - Error

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

클라이언트(브라우저)측에서 해야 할일

이 에러가 발생했을 경우 웹브라우저의 쿠키를 삭제함으로써 간단히 해결되는 경우가 있다.

IE 사용자의 경우 도구(톱니바퀴모양) -> 인터넷 옵션 -> 일반탭의 검색기록에서 삭제 -> 확인 과 같은 순서다.

크롬 사용자의 경우 설정 -> 페이지 하단의 고급 설정 표시 -> 개인정보 부분의 인터넷 사용정보 삭제 -> 쿠키 및 ... 삭제 체크 -> 인터넷 사용정보 삭제 와 같은 순이다.

서버측에서 해야 할일

브라우저에서 쿠키를 삭제하였는데도 같은 에러가 발생했을때는 서버측의 설정을 살펴보아야 한다.

php.ini 파일을 들여다보면 세션파일의 저장위치는 기본적으로 아래와 같다.

session.save_path = "/var/lib/php/session" 

또는 세션파일의 저장위치를 /tmp 로 사용하는 경우도 있다.

session.save_path = "/tmp" 

이 세션파일의 디렉토리 퍼미션과 소유권을 살펴보자

Bash
ls -la /var/lib/php

  drwxrwx---   2 root apache 4096 2013-07-12 07:16 session
Bash
ls -la /var/lib/php/session

  -rw------- 1 apache apache 13842 2013-07-12 06:14 sess_2hp41jsraac5dei7nn93c5mre3ucgvgj

위에서 보는 바와 같이 세션 디렉토리는 User root / Group apache 의 소유권을 가지고 있다. 세션 파일은 User apache / Group apache 의 소유권을 가지고 있다.

추측컨데, CentOS 6.4의 경우 yum으로 아파치를 설치시 httpd.conf의 설정중에 User와 Group 지시자의 기본 설정값이 apache인 것을 확인할 수 있다. 아파치 설치시 apache 유저와 그룹이 함께 생성된다. 그런데 이를 nobody로 변경하는 경우가 많은데 여기에 문제의 포인트가 있지 않나 생각한다.

phpmyadmin의 설정파일을 살펴보자.

Bash
ls -la /usr/share/phpmyadmin | grep config.inc.php

  -rw-r-----   1 root apache   1694 2013-07-12 07:07 config.inc.php

예상한대로 이 파일역시 소유그룹은 apache로 되어 있고 그 소유그룹에 읽기 권한이 있다. 즉, httpd.conf에서 User / Group을 변경하였다면 그 변경한 이름대로 위 파일들의 소유권한을 모두 변경해야 할 터이다.

또한, 이미 생성되어 있는 세션파일들도 소유권을 변경하거나 삭제하고 서비스를 재시작 하여야 할것으로 예상된다. 그 이외에도 변경해야 할 것이 있는지 알지 못하고 세션파일을 삭제함으로써 발생하는 문제가 무엇이 있는지는 모르겠다.

만일 아파치 설정에서 User / Group 을 nobody로 변경하였다면 아래와 같이 실행하자.

Bash
chown -R nobody:nobody /var/lib/php/session 

혹은 세션파일의 접근권한을 누구에게나 주는 것이다.

Bash
chmod 0777 /var/lib/php/session

서비스를 재시작하고 결과를 다시 살펴보자.

Bash
service httpd restart

만약 같은 문제가 발생한다면 이번에는 같은 방법으로 phpmyadmin의 config.inc.php의 소유권도 변경해보자.

phpmyadmin의 경로는 자신이 설치한 경로를 입력하도록 하자

Bash
chown root:nobody /usr/share/phpmyadmin/config.inc.php

다시 서비스를 재시작하고 결과를 확인해보자. 해결되었기를 바란다...