Ubuntu에 PHP 설치하기: 초보자부터 고급자까지 완전 가이드 (Ubuntu 22.04 LTS)

目次

1. 소개

Ubuntu에서 PHP를 사용하는 이유

PHP는 워드프레스를 포함한 많은 웹 애플리케이션에서 널리 사용되는 서버‑사이드 스크립팅 언어입니다. 수년간 웹 개발에 광범위하게 사용되어 왔으며, 수많은 CMS 플랫폼과 프레임워크가 PHP 위에 구축되어 있습니다.

Ubuntu는 전 세계 개발자들이 사용하는 매우 안정적인 Linux 배포판으로, 특히 서버 환경에 적합합니다. Ubuntu와 PHP의 조합은 개인 개발 환경부터 엔터프라이즈급 프로덕션 시스템에 이르기까지 널리 채택되고 있습니다.

대상 독자 및 본 문서의 목적

이 문서는 Ubuntu에 PHP를 설치하고자 하지만 어디서 시작해야 할지 모르는 초보자부터, 특정 PHP 버전을 설치해야 하는 중급 사용자까지 다양한 독자를 대상으로 합니다. 절차는 가능한 한 명확하게 설명합니다.

본 문서는 Ubuntu 22.04 LTS를 기준으로 작성되었으며, 동일한 기본 단계가 다른 버전에도 적용됩니다.

이 문서를 통해 배우게 될 내용

이 문서를 읽고 나면 다음을 이해하고 직접 수행할 수 있습니다:

  • Ubuntu에 PHP를 설치하는 기본 방법
  • 여러 PHP 버전을 설치하고 전환하는 방법
  • PHP 작동을 확인하고 문제를 해결하는 방법
  • Apache와 Nginx 연동을 위한 설정
  • 자주 사용하는 PHP 모듈 설치 방법

2. 전제 조건 및 준비 사항

Ubuntu 버전 확인 방법

먼저 사용 중인 Ubuntu 버전을 확인합니다. Ubuntu 버전에 따라 PHP 설치 방법 및 지원 모듈이 약간씩 달라질 수 있습니다.

다음 명령을 실행하면 Ubuntu 버전을 확인할 수 있습니다:

lsb_release -a

또는 다음 명령을 사용할 수도 있습니다:

cat /etc/os-release

이 문서는 Ubuntu 22.04 LTS를 기준으로 절차를 설명하지만, 일반적으로 Ubuntu 20.04 및 23.10에서도 동일한 단계가 적용됩니다.

시스템 패키지 최신 상태 유지

PHP를 설치하기 전에 모든 시스템 패키지를 최신 상태로 업데이트하는 것이 매우 중요합니다. 이는 의존성 문제와 충돌을 방지하는 데 도움이 됩니다.

sudo apt update
sudo apt upgrade -y

위 명령은 APT 패키지 인덱스를 업데이트하고, 모든 패키지를 최신 안정 버전으로 설치할 수 있도록 합니다.

필수 유틸리티 설치

일부 PHP 버전은 저장소 관리를 위해 추가 도구가 필요합니다. software-properties-common 패키지는 PPA와 같은 저장소를 추가할 때 필요합니다.

설치되어 있지 않다면 다음 명령으로 설치합니다:

sudo apt install -y software-properties-common

이 패키지는 add-apt-repository와 같은 명령에 필요하며, PPA를 통해 특정 PHP 버전을 설치할 때 자주 사용됩니다.

루트 권한 또는 sudo 사용

이 문서에서 소개하는 대부분의 작업은 시스템 수준의 변경을 요구합니다. 명령을 실행할 때 반드시 sudo를 사용하십시오.

3. PHP 설치 방법

Ubuntu에 PHP를 설치하는 방법은 크게 두 가지가 있습니다. 하나는 기본 저장소에서 설치하는 것이고, 다른 하나는 PPA(개인 패키지 저장소)를 이용해 특정 버전을 설치하는 것입니다. 각 방법을 아래에서 자세히 설명합니다.

기본 저장소에서 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 버전 설치

최신 PHP 버전을 사용하거나 여러 버전을 관리하고 싶다면 ondrej/php PPA를 추가하면 됩니다.

단계 1: PPA 저장소 추가

sudo add-apt-repository ppa:ondrej/php
sudo apt update

이 PPA는 Ubuntu 커뮤니티에서 널리 사용되며, 여러 PHP 버전에 대한 안정적인 빌드를 제공합니다.

단계 2: 원하는 PHP 버전 설치

예를 들어 PHP 8.2를 설치하려면:

sudo apt install -y php8.2

.

다른 버전인 PHP 7.4 또는 8.0도 설치할 수 있습니다.

Step 3: 설치된 버전 확인

php -v

4. PHP 동작 확인

PHP를 설치한 후, 정상적으로 동작하는지 확인합니다. 명령줄(CLI)과 Apache 또는 Nginx와 같은 웹 서버를 통해 확인할 수 있습니다.

명령줄(CLI)로 확인

터미널에서 PHP 버전을 먼저 확인합니다:

php -v

예시 출력:

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가 설치되어 있다면 phpinfo() 함수를 이용해 테스트 페이지를 만듭니다.

1. 테스트 파일 만들기

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

2. 브라우저로 접근

http://localhost/info.php

3. 출력 확인

PHP 정보가 상세히 표시되면 Apache와 함께 PHP가 정상적으로 동작하는 것입니다.

🔍 Note: phpinfo() 출력에는 민감한 정보가 포함될 수 있습니다. 확인이 끝난 후 파일을 삭제하세요.

sudo rm /var/www/html/info.php

Nginx + PHP‑FPM으로 확인

Nginx를 사용할 경우 PHP는 php-fpm을 통해 처리됩니다. Apache와 마찬가지로 info.php 파일을 만들어 정상 연동을 확인합니다.

구성이 올바르지 않으면 500 오류가 발생하거나 파일이 실행되지 않고 다운로드될 수 있습니다. 이 경우 Nginx 설정 파일의 fastcgi_passinclude fastcgi-php.conf;와 같은 항목을 점검하십시오.

5. 자주 사용하는 PHP 모듈 설치

PHP만 설치한다고 모든 기능을 사용할 수 있는 것은 아닙니다. 많은 기능이 별도의 모듈(확장) 형태로 제공되며 필요에 따라 설치해야 합니다. 이 섹션에서는 실무 개발·운영에서 흔히 쓰이는 PHP 모듈을 소개합니다.

PHP 모듈이란?

PHP 모듈(확장)은 데이터베이스 연결, 멀티바이트 문자열 처리, 이미지 처리, XML 파싱 등 특정 기능을 추가해 줍니다.

모듈은 APT 패키지 형태로 제공되며 다음과 같이 설치할 수 있습니다:

sudo apt install php-module-name

버전을 지정하고 싶다면 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 module_name
sudo systemctl restart apache2

활성화된 모듈은 웹 서버를 재시작한 뒤 적용됩니다.

6. PHP 버전 관리 및 전환

.Ubuntu에서는 단일 서버에 여러 PHP 버전을 설치하고 사용할 수 있습니다. 이는 개발 환경이나 여러 웹 애플리케이션을 호스팅하는 서버에서 특히 유용합니다.

이 섹션에서는 CLI와 Apache에서 PHP 버전을 전환하는 방법을 설명합니다.

CLI에서 PHP 버전 전환

사용 명령: update-alternatives

update-alternatives를 사용하면 명령줄에서 사용되는 PHP 버전을 쉽게 전환할 수 있습니다.

단계 1: 설치된 PHP 버전 확인

ls /usr/bin/php*

단계 2: 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: PHP 버전 선택

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 <enter> to keep the current choice[*], or type selection number:

단계 4: 버전 확인

php -v

Apache에서 PHP 버전 전환

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

7. PHP를 Apache와 Nginx에 통합하기

PHP는 웹 서버와 통합될 때 비로소 강력해집니다. Ubuntu에서 가장 많이 사용되는 웹 서버는 ApacheNginx입니다.

Apache 통합 (mod_php)

Apache는 mod_php 모듈을 사용하여 PHP 스크립트를 직접 처리할 수 있습니다. 이 방법은 간단하며 WordPress와 같은 CMS 플랫폼에 적합합니다.

단계 1: Apache와 mod_php 설치

sudo apt install -y apache2 libapache2-mod-php

단계 2: Apache 재시작

sudo systemctl restart apache2

단계 3: PHP 실행 테스트

<?php
phpinfo();
?>
http://localhost/test.php

Nginx 통합 (PHP-FPM)

Nginx는 PHP를 직접 처리하지 않습니다. 대신 PHP-FPM (FastCGI Process Manager)에 의존합니다.

단계 1: Nginx와 PHP-FPM 설치

sudo apt install -y nginx php-fpm

단계 2: Nginx 설정 편집

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

8. 문제 해결

브라우저에 PHP 소스 코드가 표시됨

원인

웹 서버가 PHP 파일을 올바르게 처리하지 못할 때 발생합니다.

해결 방법

  • Apache:
    sudo apt install libapache2-mod-php
    sudo systemctl restart apache2
    
  • Nginx:
    sudo systemctl restart php8.2-fpm
    sudo systemctl restart nginx
    

PHP 함수가 정의되지 않음

원인

필요한 PHP 모듈이 설치되지 않았거나 활성화되지 않았습니다.

해결 방법

sudo apt install php-mbstring php-xml php-curl
sudo systemctl restart apache2
php -m

PHP 오류가 표시되지 않음

해결 방법

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:

/var/log/php8.2-fpm.log

9. 요약

This article provided a step-by-step explanation of how to install PHP on Ubuntu, from basics to advanced topics.

이 문서는 기본부터 고급 주제까지 Ubuntu에 PHP를 설치하는 방법을 단계별로 설명합니다.

주요 내용

  • Ubuntu 버전을 확인하고 패키지를 업데이트하세요.
  • 기본 저장소 또는 PPA를 통해 PHP를 설치하세요.
  • CLI와 웹 서버를 통해 PHP를 확인하세요.
  • 모듈을 사용해 기능을 확장하세요.
  • 여러 PHP 버전을 유연하게 관리하세요.
  • Apache 또는 Nginx와 적절히 통합하세요.
  • 문제 해결 시 로그를 확인하세요.

다음 단계

  • MySQL 또는 MariaDB를 설치하세요.
  • WordPress를 설정하세요.
  • Laravel과 같은 PHP 프레임워크를 사용하세요.
  • SSL 인증서로 HTTPS를 활성화하세요.
  • systemd로 서비스를 관리하세요.

Ubuntu와 PHP를 함께 사용하면 견고하고 유연한 개발 환경을 제공합니다. 이 가이드를 기반으로 삼고 지속적으로 기술을 확장해 나가세요.

10. 자주 묻는 질문 (FAQ)

Q1. Ubuntu에 최신 PHP 버전을 어떻게 설치하나요?

A. ondrej/php PPA를 사용하고 원하는 버전을 지정하세요.

Q2. CLI에서 PHP 버전을 어떻게 전환하나요?

sudo update-alternatives --config php

Q3. Apache에서 PHP 소스 코드가 표시됩니다.

sudo apt install libapache2-mod-php
sudo systemctl restart apache2

Q4. php.ini 파일은 어디에 있나요?

  • Apache: /etc/php/8.2/apache2/php.ini
  • CLI: /etc/php/8.2/cli/php.ini

Q5. PHP 모듈을 어떻게 활성화하나요?

sudo phpenmod mbstring
sudo systemctl restart apache2

Q6. PHP가 Nginx와 작동하지 않습니다.

php-fpm이 설치되어 있고 fastcgi_pass가 올바르게 구성되어 있는지 확인하세요.

Q7. PHP 오류가 보이지 않습니다.

display_errors = On
error_reporting = E_ALL