최근 FreeBSD에서 PHP 설치 때문에 꽤 골아팠습니다. FreeBSD 뿐만 아니라 다른 운영체제에서도 많이 바뀌는 부분이 있으리라 생각되는데요.(특히 PHP 5 버전의 경우 MySQL Library가 기본 제공되지 않는다든가) 유의하시라고 적어둡니다.
일단 배경부터 설명하자면, PHP 4.3.8 부터(2004년 7월 19일) extension들이 대부분 분리되었습니다. GD Library나 Iconv 같은 '원래 분리된 것' 외에도 세션(Session)이나 MySQL과 같이 친숙하게 써오던 라이브러리들도 대부분 분리되었습니다. FreeBSD 포트 패키지에서 봐온 부분이라 다른 것에서도 그럴지는 모르겠지만 그럴거라는 예상이네요(...)
일단 PHP를 설치하려면 다음의 포트들을 참고해야 합니다. (참고로 여기서는 PHP 4.3.8 이상을 아파치 1.3 혹은 2 버전대에 설치할 때를 가정합니다. 아파치 모듈 외에 CGI로 설치할 경우에는 상황이 동일할 것으로 가정하여 여기서는 아파치 모듈로 설치한다고 가정합니다.)
/usr/ports/www/mod-php4
PHP 4.3.8 (혹은 그 이상 버전) 가 설치되지만 PHP의 정말로 베이스(Base)만 설치됩니다.
최근에 cvsup을 통하여 포트 업그레이드를 하셨다면 /usr/ports/UPDATING 파일에서
7월 19일자로 Extension을 따로 설치해야 한다는 것을 발견하실 수 있습니다.
/usr/ports/lang/php4-extensions
여기에 extension 들이 있습니다. make install을 하면 어떤 라이브러리를 설치할지 선택하는 다이얼로그가 뜹니다.(4.3.8 이전 버전에서 설치할 때 늘 보던 친숙한 화면이죠) 그러나 꼭 여기서 make install 을 하여 설치하지는 않아도 됩니다. 가령 /usr/ports/databases/php4-mysql 과 같이 PHP의 extension library 들이 분산되어 있습니다.
extension의 관리는 일단 pkg_version 을 통해 보면 php4_iconv 와 같은 이름으로 패키지가 설치되어 있음을 알 수 있습니다. 이는 즉 php4-extensions 을 통하여 꼭 관리하지는 않아도 된다는 것입니다. pkg_delete 를 통하여 개별 PHP 라이브러리를 삭제하여도 되고 또 개별로 추가하여도 됩니다. (cvsup과 portupgrade 등을 통하여 PHP Base와 분리하여 버전 관리도 용이합니다.)
이전 버전에서 업그레이드하시는 분들은 설치시에 문제가 발생하지 않으나 세션 등의 API 함수를 사용하는 경우 에러가 발생할 수 있습니다. extension 중에 세션이나 MySQL 인터페이스와 같은 중요 라이브러리가 포함되어 있기 때문인데요. 이게 PHP Base로부터 분리되었으니 꼭 설치하시기 바라고, 특히 make install 시에 '이미 라이브러리가 설치되어 있다'면서 make deinstall 을 요구하는 경우 make reinstall을 통해 설치하면 문제가 대부분 해결됩니다.
라이브러리를 다 설치해도 좋으나 설치할수록 php가 무거워짐을 느낄 수 있습니다. 따라서 꼭 필요한 것만 설치하시기 바랍니다.
마지막으로, 포트를 통해 설치하는 경우 /usr/local/etc/php.ini 에 extension=iconv.so 와 같이 자동으로 extension이 추가되나, 추가되지 않는 경우도 간혹 있습니다(...) 이런 경우 php.ini 를 손수 편집해주시기 바랍니다. extension을 설치해도 세션 함수 등에 대한 에러가 여전히 발생한 경우 PHP가 라이브러리를 찾지 못해서입니다. extension이 설치되어 있는 디렉토리를 확인하여 php.ini에 꼭 extension_dir 경로를 기입해주시기 바랍니다. ( 참고로 저같은 경우에는 삽질하다가 /usr/local/lib/php/20020429 로 지정해두었습니다. )
댓글 없음:
댓글 쓰기