Rocky Linux 9 에서 웹서버 없이 PHP 8.2 및 PHP-FPM 설치하기

리눅스/PHP|2024. 2. 7. 09:07
반응형

PHP-FPM (FastCGI Process Manager) 은 PHP FastCGI 의 대안으로 트래픽이 많은 웹 사이트의 경우 php-fpm 풀 관리를 사용하여 웹 사이트의 성능 부하를 개선할 수 있습니다.

PHP 는 보통 웹서버와 같이 설치되지만, 서버 로컬에서만 PHP 코드를 실행할때, 굳이 Apache 나 Nginx 는 설치할 필요가 없습니다.

여기에서는 Rocky Linux 9 환경에서 웹서버 없이 PHP 8.2 및 PHP-FPM 를 설치하는 방법을 기술하고 있습니다.

 

 

1. PHP 설치

 

PHP-FPM 을 사용하려면 먼저 PHP 가 시스템에 설치되어 있어야 합니다.

환경을 업데이트 하고 Epel 리포지토리를 추가합니다.

# dnf -y update

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

 

Remi 리포지토리를 추가합니다.

# dnf -y install http://rpms.remirepo.net/enterprise/remi-release-9.rpm

 

기본 PHP 모듈을 재설정합니다.

# dnf -y module reset php

 

사용 가능한 PHP 모듈을 확인합니다.

여기에서 설치 가능한 PHP 버전이 확인됩니다.

# dnf module list php

 

PHP 패키지의 기본 설치 버전을 Remi repository PHP 8.2 로 변경합니다.

# dnf -y module enable php:remi-8.2

 

PHP 를 설치합니다.

# dnf -y install php

 

설치된 PHP 버전을 확인합니다.

# php -v
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

 

 

2. PHP-FPM 설치

 

위와 같이 진행했을 경우, 출력된 내용을 살펴보면 php 관련 패키지가 몇가지 자동으로 설치되는데, php-fpm 까지 포함되어져 있습니다.

php

php-cli

php-common

php-fpm

php-mbstring

php-opcache

php-pdo

php-sodium

php-xml

 

php-fpm 이 설치되었는지 확인합니다.

# rpm -qa |grep php-fpm
php-fpm-8.2.15-1.el9.remi.x86_64

 

php-fpm 설치가 되지 않았을 경우 아래와 같이 설치합니다.

# dnf -y install php-fpm

 

설치된 PHP-FPM 버전을 확인합니다.

# php-fpm -v
PHP 8.2.15 (fpm-fcgi) (built: Jan 16 2024 12:19:32)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

 

설치된 php-fpm 서비스를 시작하고 부팅할 때마다 자동으로 실행되도록 설정합니다.

# systemctl enable --now php-fpm

 

 

3. PHP 확장 모듈 설치

 

응용 프로그램을 위한 추가 PHP 모듈을 설치할 수 있습니다.

간단히 패키지 설치하듯 (dnf -y install php-curl) 설치가 가능하며, 여러개의 모듈을 설치할때는 아래와 같이 사용할 수 있습니다.

# dnf -y install php-{bcmath,gd,imap,intl,mysqlnd,pear,pecl-zip,process}

 

설치된 모듈 리스트를 확인합니다.

# php -m

 

반응형

댓글()

PHP 8.0 에서 SCREWIM 을 이용한 소스 암호화

리눅스/PHP|2021. 12. 28. 13:53
반응형

DB 접속 정보가 들어있는 파일이 노출될 우려가 있어 많은 개발자들이 암호화 방법을 찾고 있습니다.

검색해보면 상용 프로그램 또는 난독화, 무료 암호화 프로그램이 몇 개 있으나

여기에서는 김정균님이 만드신 screw 개선 버전 screwim 을 소개합니다.

아래 내용은 CentOS 7, PHP 8.0 소스설치 환경에서 테스트 했으며,

페이지 하단 출처의 내용을 요약하였습니다.

 

 

1. 다운로드

 

# cd /usr/local/src
# git clone https://github.com/OOPS-ORG-PHP/mod_screwim.git

mod_screwim.zip
0.22MB

# cd mod_screwim
# /usr/local/php/bin/phpize


2. PHP 확장 모듈 생성하기

 

# ./configure --with-php-config=/usr/local/php/bin/php-config
# make install

php.ini 에 아래 내용 추가
# vi /usr/local/apache/conf/php.ini
extension = screwim.so
screwim.enable = 1

(아파치 재시작 및 적용 확인)
# /usr/local/apache/bin/apachectl restart
# /usr/local/php/bin/php -m |grep screwim

 


3. SCREWIM 설치

 

# cd tools
# ./autogen.sh    // 위에서 모듈을 설치하지 않으면 실행이 안됩니다. 모듈부터 설치하세요.

# ./configure

# make install

 

(설치 확인)
# /usr/local/bin/screwim -v


4. PHP 소스 암호화 하기


# cd /{PHP 소스 디렉토리}
# screwim config.php

 

원본 파일은 백업하고 암호화된 파일은 사용하는 파일명으로 변경합니다.
# mv config.php config.php.ori
# mv config.php.screw config.php

사이트 동작을 확인합니다.

 

* 복호화 불가 처리하실 분은..

   실행 파일이나 설치 소스 파일이 그대로 남겨져 있을 경우 screwim -d 옵션을 통해 복호화가 가능하므로

   실행 파일 및 설치 소스 파일 디렉토리를 삭제 합니다.

   (설치시 암호화, 복호화에 사용되는 랜덤 생성된 KEY STRING 삭제)

    rm -f /usr/local/bin/screwim

    rm -rf /usr/local/src/mod_screwim

 

 

[출처] https://www.php79.com/525

https://github.com/OOPS-ORG-PHP/mod_screwim/

https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=81220

 

 

반응형

댓글()

PHP - cUrl를 이용해 PUT, POST, GET으로 json을 전달하는 방법

리눅스/PHP|2021. 10. 22. 09:00
반응형

Rest API를 구축하였다면 PHP를 사용하여 curl로 json 문자열을 주고 받을 수 있어야 합니다. 그것은 아마도 POST 가 될 수 있고, GET 또는 PUT 이 될 수 있습니다.

curl 은 가장 보편적인 방법이며 PHP 는 간단한 방법이 될 수 있습니다.


PUT 방식

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

GET 방식 

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>


POST 방식

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

DELETE 방식 

<?
$url = 'https://example.com';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

$response  = curl_exec($ch);

curl_close($ch);
?>

 

다음은 인증을 위해 헤더를 추가하는 방법입니다.

<?php
$url = 'https://example.com';
$data = '{"key": "value"}';
// 인증용 사용자 및 비밀번호
$auth = 'yourname:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// 기본 인증 헤더 설정
curl_setopt($ch, CURLOPT_USERPWD, $auth);
$response  = curl_exec($ch);

curl_close($ch);
?>

 

위 코드를 정리해서 아래와 같이 함수를 만들어 사용할 수 있습니다.

<?php
function restAPI($method = 'POST', $url, $data = null, $auth = null)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  if($method == 'POST')
  {
    curl_setopt($ch, CURLOPT_POST, 1);
  }
  if(strlen($auth) > 0)
  {
    curl_setopt($ch, CURLOPT_USERPWD, $auth);
  }
  if(strlen($data) > 0)
  {
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  }

  $response  = curl_exec($ch);
  curl_close($ch);

  return $response;
}

$url = 'https://example.com';
$data = '{"key": "value"}';
$auth = 'yourname:password';


// POST
$rest = restAPI('POST', $uri, $data, $auth);

// GET
$rest = restAPI('GET', $uri, $data, $auth);

// PUT
$rest = restAPI('PUT', $uri, $data, $auth);

// DELETE
$rest = restAPI('DELETE', $uri);
?>

 

[출처] https://www.habonyphp.com/2021/07/php-curl-put-post-get-json.html

반응형

댓글()

CentOS 7 에서 PHP 8.0 설치하기

리눅스/PHP|2021. 10. 19. 08:00
반응형

간단히 yum 명령으로 설치가 가능합니다.

 

# yum -y install epel-release
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install php80 php80-php php80-php-mbstring php80-php-pdo php80-php-mysqlnd php80-php-gd php80-php-xml php80-php-fpm

 

이후 필요에 따라 php.ini 를 수정해 줍니다.

php.ini 파일은 아래에 있습니다.

 

# vi /etc/opt/remi/php80/php.ini

 

short_open_tag = On

date.timezone = "Asia/Seoul"

 

반응형

댓글()

php 5.2.17 소스 컴파일시 오류 (node.c: In function 'dom_canonicalization')

리눅스/PHP|2019. 2. 13. 16:02
반응형

php 소스 컴파일시 아래와 같은 오류가 발생하는 경우가 있다. 


gcc 4.7 버전에서 아래와 같은 오류가 발생한다. 


/home/segio_php/php-5.2.17/ext/dom/node.c: In function ‘dom_canonicalization’:

/home/segio_php/php-5.2.17/ext/dom/node.c:1953:21: error: dereferencing pointer to incomplete type

/home/segio_php/php-5.2.17/ext/dom/node.c:1955:5: error: dereferencing pointer to incomplete type



이때는 아래와 같은 순서로 php 소스를 패치하면 오류가 사라진다. 


(소스 디렉토리에서)

# wget -O php.patch  https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt

# patch -p0 -b < php.patch

patching file ext/dom/node.c

Hunk #1 succeeded at 1950 (offset 55 lines).

patching file ext/dom/documenttype.c

Hunk #1 succeeded at 215 (offset 10 lines).

patching file ext/simplexml/simplexml.c

Hunk #1 succeeded at 1343 (offset -74 lines).


patch 명령어를 찾을 수 없다고 할 경우 yum -y install patch


위와 같이 패치를 적용한 후 컴파일을 하면 문제없이 진행된다. 


[출처] http://blog.naver.com/ssik425/10175143994



===================== php.patch 내용 ====================

--- ext/dom/node.c	2012-08-06 17:49:48.826716692 +0800
+++ ext/dom/node.c	2012-08-06 17:52:47.633484660 +0800
@@ -1895,9 +1895,17 @@ static void dom_canonicalization(INTERNA
         RETVAL_FALSE;
     } else {
 		if (mode == 0) {
+#ifdef LIBXML2_NEW_BUFFER
+            ret = xmlOutputBufferGetSize(buf);
+#else
 			ret = buf->buffer->use;
+#endif
 			if (ret > 0) {
+#ifdef LIBXML2_NEW_BUFFER
+                RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1);
+#else
 				RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
+#endif
 			} else {
 				RETVAL_EMPTY_STRING();
 			}
--- ext/dom/documenttype.c	2012-08-06 18:02:16.019640870 +0800
+++ ext/dom/documenttype.c	2012-08-06 18:06:16.612228905 +0800
@@ -205,7 +205,13 @@ int dom_documenttype_internal_subset_rea
 		if (buff != NULL) {
 			xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
 			xmlOutputBufferFlush(buff);
+
+#ifdef LIBXML2_NEW_BUFFER
+			ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff),
+			             xmlOutputBufferGetSize(buff), 1);
+#else
 			ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
+#endif
 			(void)xmlOutputBufferClose(buff);
 			return SUCCESS;
 		}
--- ext/simplexml/simplexml.c	2012-08-06 18:10:44.621017026 +0800
+++ ext/simplexml/simplexml.c	2012-08-06 18:12:48.016270419 +0800
@@ -1417,7 +1417,12 @@ SXE_METHOD(asXML)
 
 			xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->ptr)->encoding);
 			xmlOutputBufferFlush(outbuf);
+#ifdef LIBXML2_NEW_BUFFER
+			RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf),
+			               xmlOutputBufferGetSize(outbuf), 1);
+#else
 			RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use, 1);
+#endif
 			xmlOutputBufferClose(outbuf);
 		}
 	} else {

======================================================




반응형

댓글()

php 7 에서 mysqli 추가시 오류

리눅스/PHP|2018. 7. 15. 07:36
반응형

[설치]

# cd /usr/local/src/php-7.1.2/ext/mysqli

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config

# make

# make install


* 위에서 make 진행시 아래 오류 발생


/usr/local/src/php-7.0.7/ext/mysqli/mysqli_api.c:36:62: fatal error: /usr/local/php/ext/mysqlnd/mysql_float_to_double.h: 그런 파일이나 디렉터리가 없습니다

 


[오류 해결]

#vi mysqli_api.c


아래의 내용을 찾는다


#include "/usr/local/src/php-7.1.2/ext/mysqlnd/mysql_float_to_double.h"    // 파란색 부분을 추가하여 절대 경로로 만들어준다.


반응형

댓글()

php 설치시 만나는 각종에러

리눅스/PHP|2016. 12. 12. 13:12
반응형

리눅스 APM 소스설치시 Error 및 해결 방법
APM 소스설치시 발생되는 몇가지 Error와 그 해결 방법이다.


1. Mysql


Error 1)
checking for termcap functions library... configure: error: No curses/termcap library found
make: *** No targets specified and no makefile found.  Stop.

해결 방법
# yum –y install libtermcap-devel ncurses-devel 설치


Error 2)
/bin/rm: cannot remove `libtoolT': No such file or directory 
해결 방법
mysql 소스파일 Directory에서 아래 진행
# autoreconf --force --install
# aclocal
# libtoolize --automake --force
# automake --force --add-missing



2. Apache
Error 1)
configure: error: ...No recognized SSL/TLS toolkit detected

해결 방법
# yum –y install openssl-devel



3. PHP
Error 1)
Checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
해결 방법
# yum –y install openssl-devel


Error 2)
Configure: error: xml2-config not found. Please check your libxml2 installation.
해결 방법
# yum –y install libxml2-devel


Error 3)
Configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
해결 방법
# yum –y install curl-devel


Error 4)
Configure: error: libpng.(also) not found.
해결 방법
# yum –y install libpng-devel


Error 5)
Configure: error: Please reinstall the BZip2 distribution
해결 방법
# yum –y install bzip2-devel


Error 6)
Configure: error: libjpeg.(also) not found.
해결 방법
# yum –y install libjpeg-devel


Error 7)
Checking for unixODBC support... configure: error: ODBC header file '/usr/include/sqlext.h' not found!
해결 방법
# yum –y install unixODBC-devel


Error 8)
configure: error: DBA: Could not find necessary header file(s).
해결 방법
# yum –y install gdbm-devel


Error 9)
Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
해결 방법
# yum –y install mysql-devel


Error 10)
Configure: error: freetype.h not found.
해결 방법
# yum –y install freetype-devel


Error 11)
Configure: error: Unable to locate gmp.h
해결 방법
# yum –y install gmp-devel


Error 12)
Configure: error: Cannot find pspell
해결 방법
# yum –y install pspell-devel


Error 13)
configure: error: not found. Please reinstall the expat distribution.
해결 방법
# yum –y install expat-devel


Error 14)
Configure: error: Please reinstall the ncurses distribution
해결 방법
# yum –y install ncurses-devel


Error 15)
Configure: error: snmp.h not found. Check your SNMP installation.
해결 방법
# yum –y install net-snmp-devel



반응형

댓글()

php로 xinetd 데몬 만들기

리눅스/PHP|2015. 1. 16. 10:39
반응형

1. 서비스 등록

아래 파일을 열어 원하는 포트를 추가, 저장합니다.


root@sysdocu:~# vi /etc/services

nvr 8000/tcp # nvr 

nvr 8000/udp # nvr



2. 구동 데몬 추가

root@sysdocu:~# vi /etc/xinetd.d/nvr


service nvr

{

socket_type = stream

wait = no

user = root

server = /usr/local/php/bin/php

server_args = -f /root/nvr.php

log_on_success += HOST DURATION

log_on_failure += HOST

disable = no


* server 와 server_args 는 아래처럼 붙여서 실행된다고 보면 됩니다.

root@sysdocu:~# /usr/local/php/bin/php -f /root/nvr.php



3. 서비스 파일 만들기 (PHP)


root@sysdocu:~# vi /root/nvr.php

<?

echo "nice neulwon";

exit()        // telnet으로 테스트시 종료가 되지 않을 경우 추가해줍니다.

?> 



4. 실행

root@sysdocu:~# /etc/init.d/xinetd restart



5. 테스트

root@sysdocu:~# telnet localhost 8000


반응형

'리눅스 > PHP' 카테고리의 다른 글

php 7 에서 mysqli 추가시 오류  (0) 2018.07.15
php 설치시 만나는 각종에러  (0) 2016.12.12
socket 접속 테스트 소스  (0) 2015.01.16
ssh2 를 이용해 서버에 접속하기  (0) 2015.01.16
ChartDirector for PHP 오류  (0) 2015.01.16

댓글()

socket 접속 테스트 소스

리눅스/PHP|2015. 1. 16. 10:38
반응형
<?
define("_IP", "192.168.10.2");                                                                     // 접속하려는 서버 IP
define("_PORT", "555");                                                                                 // 접속하려는 서버 PORT
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);    // 소켓 생성
$con = socket_connect($socket, _IP, _PORT);                                     // 소켓을 IP와 PORT에 결합
socket_write($socket, "msg\n");                                                               // 소켓 메세지 전송
socket_close($socket);                                                                                  // 소켓 닫기

if ($socket === false) {
    echo "socket_create() 실패! 이유: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "socket 성공적으로 생성.\n";
}

if ($con === false) {
    echo "socket_connect() 실패.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "다음 주소로 연결 성공 : $address.\n";
}
?>


반응형

'리눅스 > PHP' 카테고리의 다른 글

php 설치시 만나는 각종에러  (0) 2016.12.12
php로 xinetd 데몬 만들기  (0) 2015.01.16
ssh2 를 이용해 서버에 접속하기  (0) 2015.01.16
ChartDirector for PHP 오류  (0) 2015.01.16
PHP에서 SNMP 사용  (0) 2015.01.16

댓글()

ssh2 를 이용해 서버에 접속하기

리눅스/PHP|2015. 1. 16. 10:38
반응형
1. libssh2 설치
배포 사이트 : http://www.libssh2.org

root@sysdocu:~# cd /usr/local/src
root@sysdocu:~# tar xvzf libssh2-1.8.0.tar.gz
root@sysdocu:~# cd libssh2-1.8.0
root@sysdocu:~# ./configure
root@sysdocu:~# make
root@sysdocu:~# make install


2. ssh2 확장 모듈 설치
배포 사이트 : http://pecl.php.net
위 사이트에서 'Download Statistics' 링크를 따라가면 'Package Statistics' 에 ssh2 라는 것이 보입니다.

* 최신버전이 나왔습니다.
php 5.x 에서는 0.13, php 7 에서는 1.1.2 를 설치하세요. (2018.11.14 기준)

root@sysdocu:~# cd /usr/local/src
root@sysdocu:~# tar xvzf ssh2-1.1.2.tgz
root@sysdocu:~# cd ssh2-1.1.2
root@sysdocu:~# /usr/local/php/bin/phpize
root@sysdocu:~# ./configure --with-php-config=/usr/local/php/bin/php-config
root@sysdocu:~# make
root@sysdocu:~# make install


* 다른 설치 방법
root@sysdocu:~# cd /usr/local/src
root@sysdocu:~# git clone https://git.php.net/repository/pecl/networking/ssh2.git
root@sysdocu:~# cd ssh2
root@sysdocu:~# /usr/local/php/bin/phpize
root@sysdocu:~# ./configure --with-php-config=/usr/local/php/bin/php-config
root@sysdocu:~# make
root@sysdocu:~# make install


모두 정상적으로 명령이 실행되면 ssh2.so 파일이 /usr/local/php/lib/php/extensions/no-debug-zts-20170718/ 디렉토리에 생성됩니다.
php.ini 에 아래와 같이 입력해줍니다.

root@sysdocu:~# vi /usr/local/apache/conf/php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20170718/"
extension = "ssh2.so"

혹시라도 extension_dir 이 다른 경로로 지정되어 있을경우 ssh2.so 파일을 그 디렉토리로 옮겨줍니다.


3. 확인
아파치를 재시작 후 모듈이 정상적으로 올라왔는지 확인합니다.
root@sysdocu:~# /usr/local/apache/bin/apachectl restart
root@sysdocu:~# /usr/local/php/bin/php -m |grep ssh2


4. 활용
이제 ssh2_connect 라는 함수 사용이 가능합니다.
php 파일을 만들고 웹상에서 확인해볼 수 있습니다.

test.php

<?

if(!function_exists("ssh2_connect")) die("서버 연결 실패");


if (!($con = ssh2_connect("system.neulwon.com", 22))) {

    echo "서버 접속 불가";

}


else {

    if (!($login = ssh2_auth_password($con, "root", "1q2w3e4r"))) {

        echo "서버 로그인 불가";

    }

    else {

        if (!($cmd = ssh2_exec($con, "ls -al"))) {

            echo "명령어 실행 불가";

        }

        else {

            echo "명령 실행 완료";

        }

    }

}

?> 


반응형

'리눅스 > PHP' 카테고리의 다른 글

php로 xinetd 데몬 만들기  (0) 2015.01.16
socket 접속 테스트 소스  (0) 2015.01.16
ChartDirector for PHP 오류  (0) 2015.01.16
PHP에서 SNMP 사용  (0) 2015.01.16
pdo_mysql 확장 모듈 설치  (0) 2015.01.16

댓글()

ChartDirector for PHP 오류

리눅스/PHP|2015. 1. 16. 10:38
반응형

Trying to load "phpchartdir530.dll" from the PHP extension directory "/usr/lib/php5/20090626".


위 메세지와 유사한 오류메세지가 출력이 된다면..


1. ChartDirector 를 운영체제 bit 수와 맞는것으로 설치했는지 확인해보세요.


다운로드 URL : http://www.advsofteng.com/download.html

설치 안내 URL : http://www.advsofteng.com/doc/cdphpdoc/phpinstall.htm


2. 위 파일을 다운로드 후 압축을 풀고, ChartDirector/lib 디렉토리 내의 모든 파일을 복사해주어야 합니다.

반응형

'리눅스 > PHP' 카테고리의 다른 글

socket 접속 테스트 소스  (0) 2015.01.16
ssh2 를 이용해 서버에 접속하기  (0) 2015.01.16
PHP에서 SNMP 사용  (0) 2015.01.16
pdo_mysql 확장 모듈 설치  (0) 2015.01.16
php mssql 연동 소스  (0) 2015.01.16

댓글()