目次
1. 소개
Ubuntu에서 PHP를 사용하는 이유
PHP는 WordPress를 비롯한 많은 웹 애플리케이션에서 사용되는 서버 사이드 스크립트 언어입니다. 특히 웹 개발 분야에서 오랫동안 널리 사용되어 왔으며, CMS와 프레임워크의 다수가 PHP로 구축되어 있습니다. Ubuntu는 안정성이 높고 전 세계 개발자들이 사용하고 있는 리눅스 배포판으로, 서버 용도에도 매우 적합합니다. Ubuntu와 PHP의 조합은 개인 개발부터 기업의 실운영 환경까지 폭넓게 활용되고 있습니다.이 글의 대상 독자와 목적
이 글에서는 “Ubuntu에 PHP를 설치하고 싶지만 어디서 시작해야 할지 모르는” 초보자부터 “특정 PHP 버전을 설치하고 싶다”는 중급자까지를 대상으로, 가능한 한 이해하기 쉽게 단계별로 설명합니다. 사용하는 Ubuntu 버전은 22.04 LTS를 전제로 하지만, 다른 버전에서도 기본적으로 동일한 절차로 진행할 수 있습니다.이 글에서 알 수 있는 내용
이 글을 읽으면 다음 내용들을 이해하고 실천할 수 있게 됩니다.- Ubuntu에서 PHP의 기본 설치 방법
- 여러 버전의 PHP를 설치하고 전환하는 방법
- PHP 동작 확인 및 문제 해결 방법
- Apache 및 Nginx와의 연동 설정
- 자주 사용되는 PHP 모듈 설치 방법
2. 전제 조건 및 준비
Ubuntu 버전을 확인하는 방법
먼저, 사용 중인 Ubuntu 버전을 확인해 둡시다. PHP 설치 방법 및 지원 모듈은 Ubuntu 버전에 따라 약간 다를 수 있습니다. 다음 명령을 실행하면 Ubuntu 버전을 확인할 수 있습니다.lsb_release -a
또는 다음 명령으로도 버전 정보를 얻을 수 있습니다.cat /etc/os-release
이 기사에서는 Ubuntu 22.04 LTS를 기준으로 설명을 진행하지만, 20.04 및 23.10에서도 기본적인 절차는 동일합니다.시스템 패키지를 최신 상태로 유지하기
PHP를 설치하기 전에 시스템 내 패키지를 최신 상태로 유지하는 것이 매우 중요합니다. 오래된 의존 관계나 불일치를 피하기 위해, 먼저 다음 명령으로 업데이트를 수행하십시오.sudo apt update
sudo apt upgrade -y
이를 통해 APT 패키지 관리자의 인덱스가 업데이트되어 최신 상태에서 다양한 패키지를 설치할 수 있게 됩니다.필요한 유틸리티 설치
일부 PHP 버전을 설치할 때는 리포지토리 추가 및 패키지 관리를 위해 “software-properties-common” 패키지가 필요합니다. 아직 설치되지 않은 경우, 아래 명령으로 먼저 설치하십시오。sudo apt install -y software-properties-common
이 패키지는 add-apt-repository
명령 등을 사용할 때 필요합니다. 특히 PPA(Personal Package Archive)를 이용해 특정 PHP 버전을 도입할 때 유용합니다.root 권한 또는 sudo 사용
이 기사에서 소개하는 많은 작업은 시스템 변경을 수반하므로sudo
를 붙여 명령을 실행해야 합니다. 일상적으로 익숙하지 않은 분은 sudo
명령의 기본 사용법을 확인해 두면 안심됩니다.3. PHP 설치 방법
Ubuntu에서 PHP를 설치하는 방법은 크게 두 가지가 있습니다. 하나는 표준 저장소에서 설치하는 방법이고, 또 하나는 PPA(Personal Package Archive)를 이용해 원하는 버전을 지정하여 설치하는 방법입니다. 여기서는 각각의 절차를 자세히 소개합니다.표준 저장소에서 PHP를 설치하기
Ubuntu의 표준 저장소에는 안정 버전의 PHP가 제공됩니다. 특히 버전에 구애받지 않는다면, 아래 절차대로 간단히 설치할 수 있습니다.sudo apt install -y php
설치가 완료되면, 다음 명령으로 PHP가 올바르게 설치되었는지 확인해 봅시다.php -v
예:
PHP 8.1.2 (cli) (built: ...)
Ubuntu 22.04의 경우, 표준으로 제공되는 것은 PHP 8.1입니다.PPA를 이용해 특정 버전을 설치하기
‘최신 PHP를 사용하고 싶다’ ‘여러 버전을 구분해서 사용하고 싶다’와 같은 경우에는, ondrej/php 라는 PPA를 추가함으로써 PHP 버전을 선택하여 설치할 수 있게 됩니다.단계 1: PPA 저장소 추가
sudo add-apt-repository ppa:ondrej/php
sudo apt update
이 저장소는 Ubuntu 커뮤니티에서도 널리 사용되고 있으며, PHP 각 버전에 대응하는 안정적인 빌드가 제공됩니다.단계 2: 원하는 PHP 버전 설치
예를 들어, PHP 8.2를 설치하고 싶다면, 아래와 같이 지정하여 실행합니다.sudo apt install -y php8.2
마찬가지로, PHP 7.4나 8.0 등 다른 버전도 설치할 수 있습니다.단계 3: 버전 확인
php -v
특정 버전 설치가 성공했다면, 여기서 해당 버전 정보가 표시됩니다.4. PHP 동작 확인
PHP 설치가 완료되면, 다음으로 그것이 올바르게 동작하는지 확인해 봅시다. Ubuntu에서는 CLI(명령줄) 확인 외에도 웹 서버(Apache나 Nginx)를 통해서도 확인할 수 있습니다. 여기서는 각각의 방법을 소개합니다.명령줄(CLI) 확인
우선 터미널에서 PHP 버전을 표시함으로써 기본적인 동작 확인을 수행합니다。php -v
이 명령으로 현재 PHP 버전 및 빌드 정보가 표시되면, CLI 상에서의 동작은 정상입니다。출력 예:
PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
웹 서버를 통한 확인(Apache인 경우)
Apache를 설치한 경우, PHP가 Apache와 올바르게 연동되는지 확인하려면phpinfo()
함수를 사용한 테스트 페이지를 만드는 것이 유효합니다。1. 테스트 파일 생성
다음 명령으로 Apache의 공개 디렉터리(보통/var/www/html
)에 PHP 파일을 생성합니다。echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
2. 브라우저로 확인
생성한 파일에 웹 브라우저로 접근합니다. 로컬 환경이라면 아래 URL이 됩니다。http://localhost/info.php
3. 표시 내용 확인
PHP에 관한 상세 정보가 표시되면, Apache를 통해 PHP가 올바르게 동작하고 있음을 확인할 수 있습니다。🔍 보충:phpinfo()
의 표시 내용에는 보안상의 정보도 포함되므로, 확인 후에는info.php
파일을 삭제해 두는 것을 권장합니다。
sudo rm /var/www/html/info.php
Nginx + PHP-FPM 확인
Nginx를 사용하는 경우, PHP는php-fpm
을 통해 처리됩니다. Nginx와 PHP-FPM 연동 확인은 Nginx 설정 파일에서 .php
파일이 적절히 처리되도록 설정한 뒤, Apache와 마찬가지로 info.php
를 생성하여 확인합니다。 설정에 문제가 있는 경우, 500 오류나 다운로드 화면이 표시될 수 있습니다. 그 경우에는 Nginx 설정 파일의 fastcgi_pass
나 include fastcgi-php.conf;
등의 구문을 재검토해야 합니다。5. 자주 사용되는 PHP 모듈 설치
PHP 본체만으로는 모든 기능을 사용할 수 없습니다. 많은 기능은 “모듈(확장 기능)”으로 제공되며, 필요에 따라 개별적으로 설치해야 합니다. 여기서는 실제 개발 및 운영에서 자주 사용되는 주요 PHP 모듈을 소개합니다.PHP 모듈이란?
PHP 모듈(또는 확장 모듈)은 데이터베이스 연결, 멀티바이트 문자 처리, 이미지 처리, XML 처리 등 특정 기능을 추가하기 위한 확장입니다. 모듈은 APT 패키지로 제공되며, 아래와 같이 설치합니다.sudo apt install php-모듈명
버전 지정하고 싶다면, 예를 들어 php8.2-mbstring
와 같이 지정합니다.
주요 PHP 모듈과 그 용도
php-mbstring(멀티바이트 문자 지원)
일본어 등 멀티바이트 문자열을 다룰 때 필요한 모듈입니다. 일본어 사이트나 메일 처리 등에 거의 필수입니다.sudo apt install php-mbstring
php-mysql(MySQL/MariaDB와의 연결)
MySQL이나 MariaDB와 같은 데이터베이스와 연동할 때 필요합니다. WordPress 등 데이터베이스를 사용하는 애플리케이션에서는 필수입니다.sudo apt install php-mysql
php-gd(이미지 처리)
이미지 생성·변환·리사이즈 등을 수행하기 위한 모듈로, 캡처 이미지 생성이나 썸네일 생성 등에 사용됩니다.sudo apt install php-gd
php-xml(XML 처리)
RSS 피드나 SOAP 등 XML 기반 데이터를 다룰 때 필요합니다. CMS나 API 연동 등에 사용됩니다.sudo apt install php-xml
php-curl(HTTP 통신)
외부 API와 연동하거나 서버에서 HTTP 요청을 보낼 때 사용됩니다. 최근에는 많은 프레임워크에서 기본으로 포함되어 있습니다.sudo apt install php-curl
php-zip(압축 파일 조작)
ZIP 파일의 압축·해제 등을 다루는 모듈로, 파일 업로드 기능 등과 결합하여 사용됩니다.sudo apt install php-zip
모듈 활성화와 재시작
모듈 중에는 설치 후 명시적인 활성화가 필요한 경우도 있습니다. 그 경우 다음과 같이phpenmod
을 사용하여 활성화합니다.sudo phpenmod 모듈명
sudo systemctl restart apache2
활성화된 모듈은 웹 서버를 재시작함으로써 반영됩니다.6. PHP의 버전 관리와 전환
Ubuntu 환경에서는, 한 대의 서버에여러 PHP 버전을 설치하여 사용할 수 있습니다. 특히 개발 환경이나 여러 Web 애플리케이션을 호스팅하고 있는 서버에서는, 서로 다른 PHP 버전 전환이 필요해지는 경우가 있습니다. 여기에서는 CLI(명령줄)에서의 전환 방법과 Apache에서의 PHP 버전 지정 방법을 설명합니다.CLI에서의 PHP 버전 전환
사용할 명령:update-alternatives
Ubuntu에서는, update-alternatives
명령을 사용하여 CLI에서 사용할 PHP 버전을 쉽게 전환할 수 있습니다.단계1:설치된 PHP 버전 확인
ls /usr/bin/php*
단계2:update-alternatives
에 PHP 버전 등록(첫 번째만)
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
단계3:사용할 버전 선택
sudo update-alternatives --config php>
이 명령을 실행하면, 아래와 같은 선택 화면이 표시됩니다:There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.2 82 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.2 82 manual mode
Press to keep the current choice], or type selection number:
원하는 버전 번호를 입력하면 전환.단계4:버전 확인
php -v
Apache에서의 PHP 버전 전환
Apache를 사용하는 경우, 버전별 모듈이 제공되며, 모듈의 활성/비활성을 전환함으로써 버전을 지정할 수 있습니다.1. 모듈 확인하기
ls /etc/apache2/mods-available | grep php
2. 현재 활성화된 모듈 비활성화
sudo a2dismod php7.4
3. 새로 사용하고 싶은
sudo a2enmod php8.2
4. Apache 재시작하여 반영
sudo systemctl restart apache2
이렇게 하면, CLI뿐만 아니라 Apache를 통한 PHP 실행에도 원하는 버전이 반영됩니다.7. Apache와 Nginx와의 연동 설정
PHP는 단독으로 동작할 뿐만 아니라, 웹 서버와 연동해서 비로소 본격적인 웹 애플리케이션을 구축할 수 있습니다. Ubuntu에서는 주로 Apache 또는 Nginx가 사용되므로, 여기서는 양쪽 웹 서버에서 PHP와의 연동 방법을 설명합니다.Apache와의 연동 설정(mod_php)
Apache에서는mod_php
모듈을 사용함으로써 PHP 스크립트를 직접 처리할 수 있습니다. 이 방법은 설정이 간단하고, WordPress와 같은 CMS를 바로 실행하고 싶을 때 적합합니다.단계 1: Apache와 mod_php 설치
sudo apt install -y apache2 libapache2-mod-php
libapache2-mod-php
패키지를 설치함으로써 Apache가 PHP 파일을 처리할 수 있게 됩니다.단계 2: Apache 재시작
sudo systemctl restart apache2
단계 3: PHP 파일 테스트
Apache의 공개 디렉터리(보통/var/www/html
)에 test.php
라는 이름으로 아래와 같은 파일을 만들고, 브라우저에서 동작을 확인합니다.<?php
phpinfo();
?>
접속 예시:http://localhost/test.php
Nginx와의 연동 설정(PHP-FPM)
Nginx는 가볍고 고속인 웹 서버이지만, PHP를 직접 처리하는 기능은 없습니다. 따라서 PHP-FPM(FastCGI Process Manager)을 통해 PHP와 연동합니다.단계 1: Nginx와 PHP-FPM 설치
sudo apt install -y nginx php-fpm
단계 2: Nginx 설정 파일 편집
보통/etc/nginx/sites-available/default
을 편집합니다.sudo nano /etc/nginx/sites-available/default
아래와 같은 설정 블록을 추가하거나 수정합니다:location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
단계 3: Nginx 재시작
sudo systemctl restart nginx
단계 4: PHP 파일 동작 확인
Apache와 마찬가지로,/var/www/html/test.php
를 만들고, 브라우저에서 접근하여 PHP 정보가 표시되는 것을 확인합니다.보충: 방화벽 설정(필요에 따라)
UFW(Uncomplicated Firewall)를 사용하고 있는 경우, 아래 명령으로 웹 서버에 대한 접근을 허용해야 합니다.sudo ufw allow 'Apache Full'
# 또는
sudo ufw allow 'Nginx Full'
Apache는 편리함이, Nginx는 성능에 강점이 있습니다. 각각의 용도에 맞게 선택하고, PHP와 올바르게 연동합시다.8. 문제 해결
PHP를 Ubuntu에 설치하고 웹 서버와 연동해도, 설정 실수나 환경 의존성 때문에 정상적으로 동작하지 않는 경우가 있습니다. 이 섹션에서는 실제로 자주 발생하는 문제와 그 원인, 해결 방법을 소개합니다.PHP가 정상적으로 동작하지 않음 (브라우저에 소스 코드가 표시됨)
원인
Apache나 Nginx가 PHP를 처리하지 않고 단순히 파일로 출력하는 경우에 발생합니다. 이는 PHP 모듈이나 FastCGI 설정이 올바르게 적용되지 않았기 때문입니다.해결책
- Apache인 경우:
libapache2-mod-php
가 설치되어 있고, 활성화되어 있는지 확인한 뒤 Apache를 재시작합니다.
sudo apt install libapache2-mod-php
sudo systemctl restart apache2
- Nginx인 경우:
php-fpm
가 설치되어 있으며, Nginx 설정에서fastcgi_pass
가 올바른 소켓 또는 포트로 지정되어 있는지 확인하십시오.
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
PHP의 특정 기능을 사용할 수 없음 (함수가 정의되지 않음)
원인
필요한 PHP 모듈이 설치되지 않았거나, 활성화되지 않았을 가능성이 있습니다.해결책
- 해당 기능에 필요한 모듈(예:
mbstring
,xml
,curl
)을 설치합니다.
sudo apt install php-mbstring php-xml php-curl
- 모듈을 활성화한 후에는 웹 서버를 재시작합니다.
sudo systemctl restart apache2 # 또는 nginx
- 활성화된 모듈 목록 확인:
php -m
PHP 오류가 화면에 표시되지 않음
원인
기본 설정에서는 PHP 오류 메시지 출력이 꺼져 있을 수 있습니다.해결책
php.ini
를 편집하여 오류 표시 설정을 변경합니다.sudo nano /etc/php/8.2/apache2/php.ini
다음 항목을 찾아서 변경합니다:display_errors = On
error_reporting = E_ALL
그 후, 웹 서버를 재시작하십시오.sudo systemctl restart apache2
오류 로그 확인 방법
Apache인 경우:
/var/log/apache2/error.log
Nginx인 경우:
/var/log/nginx/error.log
PHP-FPM 로그 (Nginx 연동 시):
/var/log/php8.2-fpm.log
이러한 로그를 확인함으로써 원인 파악에 도움이 됩니다.sudo tail -f /var/log/apache2/error.log
오류가 발생한 경우, 서두르지 말고 로그 확인 → 설정 재검토 → 서버 재시작을 기본 단계로 대응하는 것이 핵심입니다.9. 요약
본 기사에서는 “Ubuntu에 PHP를 설치하는 방법”을 주제로, 기본부터 응용까지 차례대로 설명했습니다. 여기서 기사 전체의 요점을 정리하고, 다음에 진행해야 할 단계도 소개합니다.본 기사 요점 정리
- Ubuntu의 버전 확인 및 준비 PHP를 올바르게 설치하기 위해서는 OS 버전 확인과 패키지 업데이트가 중요합니다.
- PHP 설치 방법은 2가지 표준 저장소에서 손쉽게 설치하는 방법과, PPA를 사용해 원하는 버전을 도입하는 방법이 있습니다.
- 설치 후 동작 확인
php -v
와phpinfo()
로 CLI·Web 모두 동작 확인이 가능합니다. - 모듈 활용으로 기능 확장
php-mbstring
와php-mysql
등 자주 사용하는 모듈을 필요에 따라 도입합니다. - 다중 버전 전환에도 대응
update-alternatives
와 Apache 모듈 전환으로 유연하게 대응 가능합니다. - Apache/Nginx와의 연동도 중요 사용하는 웹 서버에 맞는 적절한 설정이 안정적인 동작의 핵심이 됩니다.
- 문제 발생 시 로그 확인 “PHP가 표시되지 않음”, “기능이 동작하지 않음”과 같은 문제에는 에러 로그 확인이 유효합니다.
다음에 배울 단계
Ubuntu에 PHP를 설치했다면, 한 단계 더 나아가 다음과 같은 기술을 배우는 것을 권장합니다.- MySQL(MariaDB) 도입 및 데이터베이스 연결
- WordPress 설치 및 구축
- Laravel 등 PHP 프레임워크 도입
- HTTPS 대응 (Let’s Encrypt를 사용한 SSL 인증서 설정)
- 자동 시작·재시작 관리 (systemd 활용)
10. 자주 묻는 질문(FAQ)
Ubuntu에서 PHP를 설치·설정하면서 많은 사람들이 겪기 쉬운 문제와 자주 검색되는 궁금증을 정리했습니다. 초보자도 이해하기 쉽도록 간단하고 실용적인 답변을 제공하고자 합니다.Q1. Ubuntu에서 PHP 최신 버전을 설치하려면 어떻게 해야 하나요?
A1. Ubuntu의 표준 저장소에서는 반드시 최신 PHP 버전이 제공되는 것은 아닙니다. 보다 최신 버전을 사용하고 싶다면, 신뢰성이 높은 PPA인ondrej/php
을 추가한 뒤, 특정 버전을 지정하여 설치합니다.sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2
Q2. 설치한 PHP 버전을 CLI에서 전환하는 방법은?
A2. 여러 버전이 설치된 경우,update-alternatives
를 사용하여 버전을 전환할 수 있습니다.sudo update-alternatives --config php
표시되는 선택지 중에서 사용하고 싶은 버전 번호를 입력하면 변경할 수 있습니다.Q3. Apache에서 PHP가 동작하지 않아 PHP 파일을 열면 내용이 그대로 표시됩니다.
A3. 이는 Apache가 PHP를 처리하지 못하고 단순 텍스트 파일로 출력하고 있는 상태입니다. 아래와 같이libapache2-mod-php
모듈이 활성화되어 있는지 확인하고, 재시작하십시오.sudo apt install libapache2-mod-php
sudo systemctl restart apache2
Q4. PHP 설정 파일(php.ini)은 어디에 있나요?
A4. CLI용과 웹 서버용이 다릅니다. 일반적으로 사용되는 경로는 다음과 같습니다.- Apache용:
/etc/php/8.2/apache2/php.ini
- CLI용:
/etc/php/8.2/cli/php.ini
Q5. PHP 확장 모듈을 활성화하려면 어떻게 해야 하나요?
A5. 설치 후 모듈을 활성화하려면phpenmod
명령을 사용합니다.sudo phpenmod mbstring
sudo systemctl restart apache2
활성화한 후에는 웹 서버 재시작을 잊지 마세요.Q6. Nginx에서 PHP가 제대로 동작하지 않습니다. 설정 시 주의할 점은?
A6. Nginx에서는php-fpm
을 사용해 PHP를 처리해야 합니다. 설정 파일에 아래와 같은 fastcgi_pass
구문이 올바르게 작성되어 있는지 확인하세요.location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
버전에 따라 .sock
부분을 조정해야 합니다.Q7. PHP 오류가 화면에 표시되지 않습니다.
A7.php.ini
에서 display_errors = Off
로 설정되어 있을 가능성이 있습니다. 개발 중에만 아래와 같이 설정을 변경하여 오류를 표시할 수 있습니다.display_errors = On
error_reporting = E_ALL
변경 후에는 웹 서버 재시작이 필요합니다. 이상은 Ubuntu에서 PHP를 사용할 때 자주 묻는 질문과 그 해결 방법입니다. 이러한 지식을 가지고 있으면 문제 발생 시에도 차분히 대응할 수 있습니다.