Innovating today, leading tomorrow

OpenSQL_Technical Guide
[OpenSQL] (Interface) PHP

[OpenSQL] (Interface) PHP

Interface(PHP) 개요

PHP란?

특히 웹 개발에 적합한 널리 사용되는 범용 스크립팅 언어입니다. 빠르고 유연하며 실용적인 PHP는 블로그부터 세계에서 가장 인기 있는 웹사이트까지 모든 것을 지원합니다.

– PHP 공식 문서 –

설치 요구사항

선행 라이브러리 및 패키지

선행 라이브러리 / 패키지OS버전비고
gccLinux4.8.5c언어 컴파일러
makeLinux3.82빌드 도구
gcc-c++Linux4.8.5C++ 컴파일러
pcre-develLinux8.32Perl Compatible Regular Expressions 개발 도구 제공
expat-develLinux2.1.0XML parser인 Expat 라이브러리 개발 도구 제공
sqlite-develLinux3.7.17SQLite 데이터베이스 라이브러리 개발 도구 제공
libxml2-develLinux2.9.1xml 문서 처리를 위한 개발 도구 제공

***** 선행 패키지는 사용 시스템 기준 최신버전 사용가능합니다.***

***** 기입한 버전은 CentOS 7 기준 최신버전입니다.***

필수 라이브러리 및 패키지

필수 라이브러리 / 패키지OS버전비고
apacheWindow/Linux2.4.x(2.4.57 latest)
aprLinux1.7.x(1.7.4 latest)Apache Portable Runtime
apr-utilLinux1.6.x(1.6.3 latest)Apache Portable Runtime Util
pcreLinux8.45(latest)Perl Compatible Regular Expressions
PHPWindow/Linux8.x(8.2.7 latest),
7.x

** PostgreSQL 14.2와 호환되는 버전입니다.

시놉시스

CRUD 위주로 작성된 시놉시스로, 시놉시스 내에 들어간 쿼리나 테이블, 컬럼명은 예시 입니다.

Connect 시놉시스

  • apache와의 연동 후에 php에 접속정보를 입력하여 postgresql에 접속합니다.
    • pg_connect() 메서드를 통해 접속정보를 입력받아 직접 DB에 접속합니다.
    • 작업 후 pg_close() 메서드를 이용해 연결을 닫습니다.
    • PDO(PHP Data Object) 인터페이스를 통해 접속정보를 입력받아 DB에 접속할 수도 있습니다.

PHP Connect 시놉시스

connect_db = pg_connect(“$host $port $dbname $password”)

pg_close.($connect_db);

PDO Connect 시놉시스

$conn = new PDO(“pgsql:host=$host;dbname=$database;user=$username;password=$password”);

SELECT 시놉시스

PHP SELECT 시놉시스

$query = “SELECT * FROM test”;
$result = pg_query($conn, $query);

if ($result) {

    while ($row = pg_fetch_assoc($result)) {
        $col1 = $row['col1'];
        $col2 = $row['col2'];
        $col3 = $row['col3'];

PDO SELECT 시놉시스

$query = “SELECT * FROM test”;
$stmt = $conn->query($query);

    if ($stmt) {
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $col1 = $row['col1'];
            $col2 = $row['col2'];
            $col3 = $row['col3'];


readData($conn);

INSERT 시놉시스

PHP INSERT 시놉시스

function createData($conn, $col1Value, $col2Value, $col3Value) {

$query = “INSERT INTO test (col1, col2, col3) VALUES (‘$col1Value’, ‘$col2Value’, ‘$col3Value’)”;

$result = pg_query($conn, $query);

}


createData($conn, ‘value1’, ‘value2’, ‘value3’);

PDO INSERT 시놉시스

function createData($conn, $col1Value, $col2Value, $col3Value)
{
$query = “INSERT INTO test (col1, col2, col3) VALUES (?, ?, ?)”;
$stmt = $conn->prepare($query);
$stmt->execute([$col1Value, $col2Value, $col3Value]);


createData($conn, ‘value1’, ‘value2’, ‘value3’);

UPDATE 시놉시스

PHP UPDATE 시놉시스

function updateData($conn, $col1Value, $updatedCol2Value) {

$query = “UPDATE test SET col2 = ‘$updatedCol2Value’ WHERE col1 = ‘$col1Value'”;

$result = pg_query($conn, $query);

}


updateData($conn, ‘value1’, ‘updatedValue’);

PDO UPDATE 시놉시스

function updateData($conn, $col1Value, $updatedCol2Value)
{
$query = “UPDATE test SET col2 = ? WHERE col1 = ?”;
$stmt = $conn->prepare($query);
$stmt->execute([$updatedCol2Value, $col1Value]);


updateData($conn, ‘value1’, ‘updatedValue’);

DELETE 시놉시스

PHP DELETE 시놉시스

function deleteData($conn, $col1Value) {

$query = "DELETE FROM test WHERE col1 = '$col1Value'";

$result = pg_query($conn, $query);


}


deleteData($conn, ‘value1’);

PDO DELETE 시놉시스

function deleteData($conn, $col1Value)
{
$query = “DELETE FROM test WHERE col1 = ?”;
$stmt = $conn->prepare($query);
$stmt->execute([$col1Value]);


deleteData($conn, ‘value1’);

PHP 활용 실습

Windows 활용 실습

  • apache를 다운로드 합니다.
    URL : **https://www.apachelounge.com/download/**
    Apache win64 버전 다운로드 후, 압축해제하여 Apache24 폴더만 C드라이브로 이동합니다.
  • Apache24conf에 들어가서 http.conf 파일 내용을 수정합니다.
  • apache를 설치합니다.

cmd 창을 관리자 권한으로 실행하여 c:Apache24bin 폴더 이동 후 다음 명령어를 수행합니다.

httpd.ext -k install

** 다음 오류 발생시 httpd.conf에서 해당 내용을 주석 해제 하고 수정 후에 재기동합니다.

httpd.exe -k stop
httpd.exe -k start

  • apache 기동을 확인합니다.
    브라우저 창에 http://localhost/ 입력 후 It works! 문구를 확인합니다

여기까지가 apache 설치과정이었습니다. 계속해서 php를 다운로드하고, apache와 연동하는 과정을 같이 진행해보도록 하겠습니다!

  • php를 다운로드합니다.

URL : **https://windows.php.net/downloads/releases/archives/**
php-7.4.30-Win32-vc15-x64.zip 파일을 다운받고 압축해제하여 php7로 디렉토리 이름을 바꿉니다. 그 후 C: 위치로 이동합니다.

  • php.ini-production 파일 내용을 수정하여 php.ini로 저장합니다.

extension_dir 주석 해제 후 다음과 같이 수정 합니다.
extension_dir = “C:/php7/ext”

아래 내용 주석 해제 후 저장합니다.
extension=pdo_pgsql
extension=pgsql

  • C:Apache24confhttpd.conf 파일 내용을 다음과 같이 수정합니다.

DirectoryIndex index.php index.html

  • 파일 마지막 줄 아래에 다음 내용을 추가합니다.

PHPIniDir “C:/php7“
LoadModule php7_module “C:/php7/php7apache2_4.dll”
AddType application/x-httpd-php .html .php
AddHandler application/x-httpd-php .php
LoadFile “C:/php7/libpq.dll“

  • apache를 재기동 합니다.

httpd.exe -k stop
httpd.exe -k start

  • apache와 PHP 연동 테스트를 진행합니다.

C:Apache24htdocs 폴더에 index.php 파일을 생성하고 다음 내용을 입력합니다.

<?php
phpinfo();
?>

** 추가로, 시놉시스를 바탕으로 만든 예제파일을 통해 페이지를 확인합니다.

C:Apache24htdocs 폴더에 pgsql.php 파일을 업로드하고
http://localhost/pgsql.php
페이지에서 수행 결과 확인

Linux 활용 실습

  • 필수 패키지 설치 후 apache를 먼저 설치합니다.

#yum install gcc make gcc-c++ pcre-devel expat-devel sqlite-devel libxml2-devel
#su – opensql
$ mkdir ./interface/php
$ cd ./interface/php
$ wget https://archive.apache.org/dist/apr/apr-1.7.4.tar.gz
$ tar –xzvf apr-1.7.4.tar.gz
$ cd apr-1.7.4
$ ./configure –prefix=/usr/local/apr-1.7.4
$ cp libtool libtoolT
$ ./configure –prefix=/usr/local/apr-1.7.4
$ make
$ sudo make install

  • apache portable runtime utility를 설치합니다.

$ cd /opensql/intefrace/php
$ wget https://archive.apache.org/dist/apr/apr-util-1.6.3.tar.gz
$ tar -xzvf apr-util-1.6.3.tar.gz
$ cd apr-util-1.6.3
$ ./configure –prefix=/usr/local/apr-util-1.6.3 –with-apr=/usr/local/apr-1.7.4
$ make
$ sudo make install

  • perl compatible regular expressions를 설치합니다.

$ cd /opensql/interface/php
$ wget https://osdn.net/projects/sfnet_pcre/downloads/pcre/8.45/pcre-8.45.tar.gz
$ tar -xzvf pcre-8.45.tar.gz
$ cd pcre-8.45
$ ./configure –prefix=/usr/local/pcre-8.45
$ make
$ sudo make install

  • apache 2.4.57를 설치합니다.

$ cd /opensql/interface/php
$ wget https://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz
$ tar -xzvf httpd-2.4.57.tar.gz
$ cd httpd-2.4.54/
$ ./configure –prefix=/usr/local/httpd-2.4.57 –with-apr=/usr/local/apr-1.7.4 –with-apr-util=/usr/local/apr-util-1.6.3 –with-pcre=/usr/local/pcre-8.45 –enable-mpms-shared=all –enable-so
$ vi build/config_vars.mk
//AP_LIBS = $(MOD_SOP_LDADD) … 맨 끝에 -lexpat 추가 후 저장
$ make -j 4
$ sudo make install

여기까지가 linux의 apache 설치과정이었습니다. 마찬가지로 계속해서 php를 다운로드하고, apache와 연동하는 과정을 같이 진행해보도록 하겠습니다!

  • php를 설치합니다.

$ cd /opensql/interface/php//https://www.php.net/releases/index.php에서 8.2.7.tar.gz 다운받아 업로드
$ tar -xzvf php-8.2.7.tar.gz
$ cd php-8.2.7
$ ./configure –with-apxs2=/usr/local/httpd-2.4.54/bin/apxs –with-pgsql=/usr/pgsql-14/
$ make
$ sudo make install

  • 각 모듈이 설치된 /usr/local 디렉토리를 확인합니다.
  • apache와의 연동 설정을 합니다.

$ sudo vi /usr/local/httpd-2.4.57/conf/httpd.conf
//mpm_event_module 주석처리, mpm_prefork_module 주석 해제

LoadModule mpm_event_module modules/mod_mpm_event.so

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

//php모듈 로딩 추가, 이미 설정되어 있으면 경로 맞는지 확인
LoadModule php_module modules/libphp.so

//메인 페이지로 읽어올 수 있도록 index.php 추가
DirectoryIndex index.html index.php

//php 타입추가. AddType 검색 후 다음 내용 추가
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps

//ServerName 주석 해제 및 변경
ServerName IP주소:80

//수정 후 저장 및 vi 종료

  • apache를 기동합니다.

$ sudo /usr/local/httpd-2.4.57/bin/apachectl start

  • apache와 PHP 연동 테스트를 진행합니다.

$ cd /usr/local/httpd-2.4.57/htdocs
$ sudo vi index.php

//저장 후 접속확인 합니다.
http://ip/index.php

** 추가로, 시놉시스를 바탕으로 만든 예제파일을 통해 페이지를 확인합니다.

$ cd /usr/local/httpd-2.4.57/htdocs
//파일 업로드

//업로드 후 실행 결과를 확인 합니다.
http://ip/pgsql.php

지금까지 PostgreSQL의 (Interface) PHP에 관해 알아보았습니다

PostgreSQL을 쉽게 사용할 수 있도록 유용한 팁을 가지고 돌아오겠습니다.

다음 컨텐츠도 기대해주세요! (컨텐츠는 격주 업데이트 됩니다.)

광고성 정보 수신

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다.
내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보
  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
 

개인정보 수집 및 이용

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다. 내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보

  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
  •