LAMP(Linux, Apache, MySQL, PHP/Python/Perl) 스택의 마지막 구성요소인 PHP 스크립트에 대해 간단히 살펴보겠습니다. PHP는 C언어를 기반으로 만들어진 서버측 스크립트 언어입니다. 웹 프로그래밍에 필요한 함수들을 많이 내장하고 있어 다양한 웹 애플리케이션들이 PHP로 만들어지고 있습니다. PHP 스크립트의 특징과 구현 방법에 대해 간단히 살펴보겠습니다.
PHP 스크립트 개요
덴마크계 캐나다인 프로그래머 라스무스 러도프 Rasmus Lerdorf에 의해 1995년 출시된 PHP(PHP: Hypertext Preprocessor), 즉 ‘하이퍼텍스트 전처리기’는 웹 프로그래밍에 사용되는 오픈 소스 스크립트 언어로 역동적이고 직관적인 웹사이트를 만들 수 있도록 해줍니다. PHP는 HTML에 삽입 가능한 서버측 언어이므로, 이를 통해 외부 데이터 호출 없이도 웹 페이지에 다양한 기능을 쉽게 추가할 수 있습니다. 2024년 현재 PHP 최신 버전은 8.2.x이며, 같은 웹 프로그래밍 언어로서 Perl, JSP, ASP 등과 종종 비교되기도 합니다. 비교적 배우기 쉬운 편이어서 여전히 많은 사람들에 의해 사랑받으며 웹 프로그래밍 업계의 코딩 표준 역할을 하고 있습니다.
PHP는 다양한 운영체제(Windows, Unix, Linux, macOS, RISC OS 등), 웹서버(Apache, IIS, lighttpd, nginx 등), 그리고 데이터베이스(Mysql, PostgreSQL, Oracle, Microsoft SQL Server 등)를 지원하는 매우 유연한 스크립트 언어입니다. 웹사이트 개발용 오픈 소스 웹서버 패키지 XAMPP를 이용하면 PHP 개발 및 실행 환경을 쉽게 구축할 수 있습니다. XAMPP는 Cross-Platform(X), Apache(A), MySQL/MariaDB(M), PHP(P), Perl(P)로 구성되어 있으며, 네트워크 없이도 로컬에서 웹 애플리케이션을 개발하고 테스트할 수 있는 편리한 프로그램입니다. XAMP나 LAMP 외에도, 운영 체제만 윈도우로 교체한 윈도우 전용 WAMP(Windows, Apache, MySQL 및 PHP)도 있습니다. 이러한 유연성 덕분에 PHP 개발자는 자신이 원하는 운영 체제 및 웹서버를 선택할 수 있을 뿐 아니라, 절차적 프로그래밍과 객체 지향 프로그래밍 중 선호하는 방식으로 코드를 작성할 수도 있습니다.
PHP 스크립트 활용 영역
PHP 스크립트가 활용되는 곳은 다음 세 영역으로 정리할 수 있습니다.
- 서버측 스크립팅: PHP 스크립트의 메인 용도입니다. PC에서 PHP 애플리케이션을 작성 및 실행하려면 기본적으로 PHP 파서(해독기), 웹서버, 웹 브라우저, 이렇게 세 가지 요소가 필요합니다. PC에 웹서버와 PHP 파서를 설치하면 웹 브라우저를 통해 PHP 애플리케이션을 테스트하고 디버그 할 수 있습니다.
- 명령줄 스크립팅: 리눅스의 크론(cron) 작업이나 윈도우 작업 스케줄러 등에서 정기적으로 실행되는 스크립트를 작성하려면, 웹서버나 브라우저 없이 PHP 파서만 있으면 됩니다.
- 데스크톱 애플리케이션: PHP 스크립트는 데스크톱 애플리케이션 개발에 최적화된 언어는 아니지만, 굳이 하려고 한다면 PHP 확장인 PHP-GTK를 이용하여 그래픽 사용자 인터페이스(GUI)를 구현할 수 있습니다.
PHP 스크립트 사용 예
그렇다면, PHP 스크립트로 할 수 있는 것들은 어떤게 있을까요? PHP는 기본적으로 웹 프로그래밍을 위한 다목적 스크립팅 언어지만, 사용하기에 따라 그 기능이 단순한 웹 애플리케이션 이상으로 확장될 수 있습니다. 다음은 PHP로 수행할 수 있는 작업들에 대한 일반적 사용 예입니다.
- 웹 프로그래밍
- 동적 웹 페이지: HTML 내에 PHP 코드를 삽입하면 사용자 입력과 데이터베이스의 상호 작용을 기반으로 하는 동적 콘텐츠를 생성할 수 있습니다. 다음은 HTML 소스 내에 삽입한 PHP 코드 예제입니다.
<!-- Example: Embedding PHP in HTML -->
<html>
<body>
<h1>Hello, <?php echo "World"; ?>!</h1>
</body>
</html>
- 서버측 스크립팅: 생성된 동적 콘텐츠를 사용자 브라우저에 출력해주는 서버측 스크립팅 언어로도 사용됩니다.
- 데이터베이스 상호 작용
- 데이터베이스 연결: PHP는 MySQL, PostgreSQL, SQLite 등과 같은 다양한 데이터베이스에 접속하여 데이터 검색, 입력, 업데이트, 삭제 등의 작업을 수행할 수 있습니다. 다음은 MySQL 데이터베이스에 접속하는 PHP 스크립트 예제입니다.
<?php
// Example: Connecting to a MySQL database
$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
- 사용자 인증 및 승인: PHP를 이용하면 사용자들이 각자 자신에게 설정된 역할과 권한에 따라 웹사이트의 각각 다른 영역에 액세스하여 다른 작업을 수행할 수 있게 해주는 사용자 인증 시스템을 구현할 수 있습니다.
- 파일 처리
- PHP는 서버에 있는 파일을 읽거나 파일에 쓰는 기능, 그리고 파일을 생성하는 기능을 제공합니다. 이는 로그 파일 기록, 파일 업로드, 파일 내 데이터 처리 등의 작업을 가능하게 해줍니다. 다음은 서버에 저장되어 있는 example.txt 파일 내용을 가져와 브라우저에 출력해주는 PHP 스크립트 예제입니다.
<?php
// Example: Reading from a file
$file_content = file_get_contents("example.txt");
echo $file_content;
?>
- 콘텐츠 관리 시스템(CMS): PHP로 구축된 워드프레스(WordPress), 줌라(Joomla), 드루팔(Drupal) 등의 인기 CMS 플랫폼들은 사용자들이 고급 프로그래밍 지식 없이도 웹사이트를 만들고 콘텐츠를 관리할 수 있도록 해줍니다.
- API 개발: PHP는 서로 다른 애플리케이션 간의 통신 즉, 데이터 교환 및 기능 통합 등을 위한 API(응용 프로그래밍 인터페이스)를 구축하는 데 사용됩니다.
- 명령줄 스크립팅
PHP는 명령줄(Command Line)에서 사용될 수 있으므로, 작업 자동화, 크론, 각종 서버 유지 관리 등을 위한 명령줄 스크립트를 작성에 활용할 수 있습니다. 다음은 명령 프롬프트에 “Hello, Command Line!”이라는 명령을 보내는 PHP 스크립트 예제입니다.
<?php
// Example: Command-line script
echo "Hello, Command Line!";
?>
- 이미지 및 파일 처리
PHP에는 이미지 및 파일 처리를 위한 라이브러리가 있습니다. 썸네일 생성, 이미지 사이즈 변경 등 다양한 파일 관련 작업이 가능합니다. 다음은 input.jpg라는 이미지의 퀄리티를 75로 조정하여 output.jpg라는 새 이미지로 저장한 후 기존 이미지를 제거하는 PHP 스크립트 예제입니다.
<?php
// Example: Image manipulation
$image = imagecreatefromjpeg("input.jpg");
imagejpeg($image, "output.jpg", 75);
imagedestroy($image);
?>
이는 간단한 예제와 함께 살펴본 PHP의 지극히 기본적인 기능일 뿐이며, PHP로 구현할 수 있는 영역은 개발자의 역량에 따라 매우 방대하다고 할 수 있습니다. 아마도 그것이 PHP가 여전히 인기를 구가하고 있는 이유일 것입니다.
PHP 개발 및 실행 환경 구축하기 (feat. 윈도우용 XAMPP)
PHP 스크립트를 작성하여 실행하려면 개발 환경과 코드 편집기가 필요합니다. 개발 환경을 셋업하기 위해서는 Windows, Linux, macOS 등 원하는 운영 체제에 XAMPP를 설치하면 됩니다. XAMPP Apache 웹서버를 설치하고 MySQL 데이터베이스까지 완료되면 나면 웹서버를 시뮬레이션 할 수 있습니다.
XAMPP 설치하기

Apache Friends 웹사이트(https://www.apachefriends.org/)에서 윈도우용 XAMPP를 다운로드합니다.

‘백신 프로그램이 실행중이라서 설치 속도가 느려질 수 있다’는 안내문이 나오는데, 그냥 ‘Yes’를 클릭하여 진행합니다.

사용자 계정 컨트롤(UAC: User Account Control)이 활성화되어 있어서 XAMPP 기능이 제한될 수 있다는 경고문입니다. 일단 경고창을 그대로 두고, UAC 보안 수준을 낮추어야 할 것 같습니다.

[제어판] – [시스템 및 보안] – [보안 및 유지 관리]에서 ‘사용자 계정 컨트롤 Change User Account Control’을 선택합니다. 혹은 윈도우 시작 버튼을 눌러 ‘사용자 계정 컨트롤 Change User Account Control’을 검색, 선택합니다.

슬라이더를 ‘알리지 않음(Never notify)’으로 설정하고 ‘OK’를 클릭하여 저장합니다.

경고창으로 돌아와서 ‘OK’를 클릭합니다.

XAMPP 설치 마법사가 시작되면 ‘Next’를 클릭하여 진행합니다.

설치할 구성요소를 선택할 수 있습니다. PHP 개발 테스트 목적이므로 Tomcat과 Perl은 일단 제외하고 설치합니다. Tomcat과 Perl의 체크를 해제하고 ‘Next’를 클릭합니다.

XAMPP 설치 폴더를 설정할 수 있습니다. 저는 D 드라이브 공간이 넉넉한 편이라 D 드라이브로 경로를 변경해주었습니다. 특이사항이 없다면 그냥 기본 상태로 두셔도 됩니다. ‘Next’를 클릭합니다.

언어 선택 옵션입니다. 어차피 한글 지원이 안되므로 그냥 ‘English’로 두고 ‘Next’를 클릭합니다.

설치 준비가 완료되었습니다. ‘Next’를 눌러 설치를 진행합니다.

설치가 진행됩니다.

네트워크가 아파치 웹서버(Apache HTTP Server) 애플리케이션에 접근하는 것을 허용하겠냐는 확인창이 뜹니다. ‘Allow’ 클릭하여 진행합니다.

설치가 완료되었습니다. 제어판을 바로 시작하겠냐는 옵션에 체크하고 ‘Finish’ 눌러 설치 과정을 종료합니다.

XAMPP 제어판이 뜨면 MySQL을 가장 먼저 실행합니다. ‘Start’ 클릭합니다.

버튼이 ‘Stop’으로 바뀌고 MySQL의 PID(s)와 Port(s) 정보가 로드되면 정상적으로 실행되고 있는 것입니다. 하단의 로그에서도 상태가 ‘실행 running’으로 변경되었다는 내용을 확인할 수 있습니다.

같은 방법으로 Apache 웹서버를 실행합니다.

그 다음은 FileZilla FTP 서버를 실행합니다.

네트워크가 FileZilla 서버 애플리케이션에 접근하는 것을 허용하겠냐는 확인창이 뜹니다. ‘Allow’ 클릭하여 진행합니다.

FileZilla FTP 서버도 잘 올라왔네요.

웹 브라우저에서 주소창에 http://127.0.0.1 혹은 http://localhost 를 입력하고 실행했을 때, 위와 같은 화면이 나오면 설치가 무사히 완료되었고 아파치 웹서버가 정상적으로 실행되고 있다는 뜻입니다.

MySQL 데이터베이스 서버를 확인하기 위해 상단의 ‘phpMyAdmin’을 클릭해봅니다.

phpMyAdmin이 열리면서 위와 같은 화면이 나오면, MySQL 데이터베이스 서버도 정상적으로 잘 실행되고 있는 것입니다.

마지막으로 PHP가 제대로 설치되었는지 확인하기 위해 상단의 ‘PHPInfo’을 클릭해봅니다.

PHPInfo가 열리면서 위와 같은 화면이 나오면, PHP도 잘 설치가 된 것입니다.

관리자 권한으로 XAMPP를 실행하면 각각의 모듈을 선택적으로 윈도우 서비스에 추가할 수 있습니다. 현재는 관리자 권한으로 실행하지 않았기 때문에 서비스 옵션이 비활성화되어 있습니다.

XAMPP 아이콘에 마우스 오른쪽 버튼을 눌러 관리자 권한(Run as administrator)으로 XAMPP를 재실행합니다.

아직 서비스에 추가된 모듈이 없는 것을 확인할 수 있습니다.

서비스에 추가하기 위해 체크박스를 클릭하면 ‘실행중인 상태로는 서비스 추가나 해제가 안됩니다’ 오류가 뜹니다. ‘Stop’을 눌러 실행중인 모듈을 중지합니다.

다시 체크박스를 클릭하면 서비스를 설치 여부를 묻는 확인창이 뜹니다. ‘Yes’를 클릭하여 설치를 진행합니다.

Apache 웹서버, MySQL 데이터베이스 서버, FileZilla FTP 서버가 모두 서비스에 추가되었습니다.
이제 PHP 스크립트를 작성하여 실행할 모든 준비가 되었습니다. 기본 메모장(Notepad)으로 코드를 작성해도 무방하지만, 프로그래밍에 최적화된 Notepad++ 같은 코딩용 편집기를 사용하면 편리합니다. Notepad++는 여기에서 다운로드 할 수 있습니다: https://notepad-plus-plus.org/downloads/

로컬 드라이브의 XAMPP가 설치된 폴더에서 기본 웹 루트(Web Root)인 \htdocs\ 아래에, 메모장 혹은 기타 편집기를 이용하여 다음 PHP 코드를 작성하고 “abc.php”라는 파일명으로 저장합니다.
<?php
echo "Hello World!";
?>
웹 브라우저에서 주소창에 http://127.0.0.1/abc.php 혹은 http://localhost/abc.php를 입력하고 실행했을 때, 빈 화면에 Hello World! 문구만 나온다면 성공입니다. 웹서버와 PHP 파서 모두 정상적으로 작동하고 있습니다. 이제 로컬 웹서버 환경에서 PHP 웹 프로그래밍을 시작하시면 됩니다.
