특정 함수 사용 못하게 하기

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

php.ini 를 수정하여 아래내용 삽입 후, 웹서버를 재시작하여 적용합니다.

disable_functions = 특정함수

 

예)
disable_functions = shell_exec,exec

 

-------------------------------------------------------------

특정폴더에서만 함수를 사용못하게 하려면
해당폴더에 .htaccess 를 생성 후 아래내용을 삽입합니다.

 

php_flag disable_functions = 특정함수

반응형

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

PHP 가속프로그램 eaccelerator  (0) 2015.01.16
PHP 소스 암호화  (0) 2015.01.16
PHP OpenSSH2 (libssh2) 설치  (0) 2015.01.16
ZendGuardLoader 설치 환경에 대해  (0) 2015.01.16
Zend Optimizer 3.3.9 설치하기  (0) 2015.01.16

댓글()

PHP OpenSSH2 (libssh2) 설치

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

PHP 에서 원격지의 서버에 접속해서 데이터를 교환하거나 , 특정 프로그램을 실행시키기 위해 사용할 수 있다. 

준비물 : OpenSSL(lib), libssh2, php_ssh2

리눅스 시스템
1. OpenSSL http://www.openssl.org
직접 다운로드 (http://www.openssl.org/source/openssl-0.9.8k.tar.gz)

2. libssh2 http://sourceforge.net/projects/libssh2/
직접 다운로드 (http://jaist.dl.sourceforge.net/sourceforge/libssh2/libssh2-1.1.tar.gz)

3. ssh2 PHP extension http://pecl.php.net/package/ssh2
직접 다운로드 (http://pecl.php.net/get/ssh2-0.11.0.tgz)

OpenSSL 설치


우선 소스를 적당한 디렉토리 (예제에서는 /usr/local/src 를 사용함) 에 다운로드 받는다. 
tar zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config 또는 ./Configure --linux-elf --prefix=/usr/local/OpenSSL
# make
make install

Libssh2 설치


소스를 다운로드 받고 적당한 디렉토리에 타르볼을 해제한다. 
# tar zxvf libssh2-1.1.tar.gz
# cd libssh2-1.1
# ./configure (기본적으로 설치는 /usr/local 에 이루어진다. )
make
make install 
설치가 완료된 후에 /usr/local/lib 에 libssh2.so 파일이 존재한다. 

PHP ssh2 Extension 설치


tar zxvf ssh2-0.11.0.tgz
cd ssh2-0.11.0
phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
./configure
make
cp .libs/ssh2.so /usr/local/php/ 
(이 예제는 PHP Extension을 /usr/local/lib 에 복사를 한다.)
vi /usr/local/lib/php.ini
extension=ssh2.so 를 추가 시켜준다. 
** 여기서 extension_dir의 경로가  /usr/local/php 로 설정이 되어있고 , 시스템마다 다른경로로 표현이 될수 있음
php -m | grep ssh2
ssh2

설치가 완료 되었으므로 Apache 웹서버를 재 시작해준다. 

 

PHP ssh2 Extension 확인

phpinfo(); 함수를 이용해 ssh2 항목이 추가되었는지 확인해보아야 합니다.

 

[출처] 근원e (http://www.lovelgw.com/Blog/entry/PHP-OpenSSH2-libssh2)

반응형

댓글()

ZendGuardLoader 설치 환경에 대해

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

ZendGuardLoader 설치를 위해 OS 와 httpd, php 버전을 번갈아가며 테스트 해보았는데

아래 조건이 맞아야 설치 가능한것 같습니다.

 

- httpd 2.2.x 이하 버전 (prefork 방식)

- php 5.3.x 버전

 

설치방법은 ZendGuardLoader 압축파일 안의 README 파일을 참고하세요.

매우 쉽습니다.

반응형

댓글()

Zend Optimizer 3.3.9 설치하기

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

Zend Optimizer 3.3.9 버전은 특이하게도 httpd 가 prefork 로 설치되었을때만 연동이 가능합니다.

httpd 를 확인하여 worker 로 설치되었을 경우 prefork 로 재설치를 합니다.

 

/usr/local/apache/bin/httpd -V |grep 'Server MPM'
Server MPM:     Prefork
 

[설치 방법]

cd /usr/local/src/

wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

tar xvzf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz

cd ZendGuardLoader-php-5.3-linux-glibc23-x86_64/data/5_2_x_comp

cp ZendOptimizer.so /usr/local/php/lib/

 

아파치 설정 파일을 열어 Zend 설정을 추가해줍니다.

vi /usr/local/apache/conf/php.ini

 

맨하단에 추가합니다.

[Zend]

zend_extension=/usr/local/php/lib/ZendOptimizer.so

 

[확인 방법]

/usr/local/php/bin/php -v

PHP 5.2.9 (cli) (built: Aug 11 2011 11:11:30)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
 

* 참고 : 위 명령으로 연동 확인하였으나 적용하고 실제 사용을 위해서는 httpd 를 재시작해주어야 합니다.

반응형

댓글()

php 5.3 phpinfo 안보일 때 (<? 가 먹지 않을 때)

리눅스/PHP|2015. 1. 16. 10:31
반응형
언제나 최신버전을 고집하는 얄궂은 특성때문에 이번에 나온 php 5.3을 설치 보았다.
신나게 설치하고 나니 오류가 조금 뜬다. 뭔가 함수명이 조금 사라지고 생겨나서 그러한 문제..

가장 먼저 5.3 에서는 TimeZone을 않으면 warning을 뿌려된다.

php 5.3서는 기본적으로 사용하던 php.ini-dist 라는 없어서 당황하게 만든다.
대신 php.ini-development, php.ini-production 2개의 파일이 생기는데 둘 아무거나 사용해도 무방하다.
약간의 옵션 차이만 있을 뿐이다.

# Time Zone 셋팅
date.timezone = Asia/Seoul


그리고 적잖이 당황하게 만든 phpinfo보기!
사실 phpinfo를 보기 위해서 아래의 문구 이게 문제가 되었다.
<?      phpinfo();     ?>

위 함수 구문은 short open tag라고해서 축약식으로 쓰는거다.
기본적으론 On이 되어 5.3에서는 Off로 되어 있어서 shot open tag가 안 먹혀서 php 안먹혀서 화면에 뿌려주질 않는 것이었다.

php.ini에서 아래를 수정해준다.
short_open_tag = On

이러면 5.3 정상구동-
 
[출처] http://uzoogom.com/167


반응형

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

ZendGuardLoader 설치 환경에 대해  (0) 2015.01.16
Zend Optimizer 3.3.9 설치하기  (0) 2015.01.16
[php 설치 오류] checking for QDBM support... no  (0) 2015.01.16
mysqli 설치  (0) 2015.01.16
pdo_mysql 확장 모듈 설치  (0) 2015.01.16

댓글()

[php 설치 오류] checking for QDBM support... no

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

php 설치중 아래와 같은 메세지가 나타났을때 gdbm, gdbm-devel 을 설치하여 해결합니다.

 

[문제]

checking for QDBM support... no
configure: error: DBA: Could not find necessary header file .


[해결]

# yum install gdbm*

반응형

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

Zend Optimizer 3.3.9 설치하기  (0) 2015.01.16
php 5.3 phpinfo 안보일 때 (<? 가 먹지 않을 때)  (0) 2015.01.16
mysqli 설치  (0) 2015.01.16
pdo_mysql 확장 모듈 설치  (0) 2015.01.16
이온큐브(ioncube) 설치  (0) 2015.01.16

댓글()

mysqli 설치

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

1. 소스 폴더로 이동

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

 

2. 설치

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

# make

 

* php 7.x 에서 에러가 출력 될경우 아래와 같이 조치하면 됩니다.

# vi mysqli_api.c

#include "ext/mysqlnd/mysql_float_to_double.h"
를 아래와 같이 '절대 경로' 로 변경
#include "/usr/local/src/php-7.3.11/ext/mysqlnd/mysql_float_to_double.h" 

 

# make install
하면 아래와 같은 결과가 나옵니다.

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20060613/

(디렉토리의 날짜는 버전마다 다르므로 살펴볼것)

 

3. 적용

php.ini 파일을 열어 출력 되었던 경로를 아래와 같이 설정한 후 apache 를 재시작 하면 적용됩니다.

 

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613/"
extension=mysqli.so

 

반응형

댓글()

pdo_mysql 확장 모듈 설치

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

1. 다운로드

# cd /usr/local/src 

# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
 

2. 설치

# tar -xzvf PDO_MYSQL-1.0.2.tgz
# cd PDO_MYSQL-1.0.2
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
# make
# makeinstall
 

3. 확인 

# ll /usr/local/php/lib/php/extensions/no-debug-zts-20060613/
pdo_mysql.so 파일을 확인합니다.
 

4. 적용

php.ini 파일을 열어 모듈 연동을 해줍니다.

# vi /usr/local/Zend/etc/php.ini

[php] 하단에 아래와 같이 추가해줍니다.

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613"
extension=pdo_mysql.so
 

# /usr/local/apache/bin/apachectl restart

반응형

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

[php 설치 오류] checking for QDBM support... no  (0) 2015.01.16
mysqli 설치  (0) 2015.01.16
이온큐브(ioncube) 설치  (0) 2015.01.16
다른 도메인 세션 저장 (db)  (0) 2015.01.16
php 파일 실행하기  (0) 2015.01.16

댓글()

이온큐브(ioncube) 설치

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

이온큐브 로더(loader)는 이온큐브 인코더(encoder)로 암호화한 소스를 실행하기 위해 필요한 것 입니다.

이온큐브 로더가 서버에 구축되어 있어야 인코더로 암호화된 소스를 실행 시킬 수 있습니다.

로더는 무료 이며 인코딩 결과물 폴더 내에 포함 시킬 수도 있습니다.

(홈페이지 http://www.ioncube.co.kr/miniboard/view.php?id=faq&no=3&page=2&)

 


1. 설치

 

다운로드 페이지 http://www.ioncube.co.kr/product.html?target=1&menu=5#loader

 

ioncube.jpg

 

사이트에서 운영체제에 따른 파일을 다운로드 받아 서버에 업로드 합니다.

또는 아래와 같이 파일 경로를 확인하여 wget 으로 서버에서 직접 다운이 가능합니다.


# cd /usr/local/src

 

# wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

 

# tar xvzf ioncube_loaders_lin_x86.tar.gz

 

# mv ioncube ..


# vi /usr/local/apache/conf/php.ini // php.ini 의 Zend 연결 부분에 php버전에 맞는 이온큐브 파일을 포함시켜줍니다.

 

[Zend]

zend_extension_ts=/usr/local/ioncube/ioncube_loader_lin_5.2_ts.so // Zend항목 맨 윗줄에 추가해줍니다.

zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3

zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3

zend_optimizer.version=3.3.3

zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so

zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

 

 

2. 확인

 

# /usr/local/php/bin/php -v

 

PHP 5.2.9 (cli) (built: Nov 15 2010 10:38:30)

Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

with the ionCube PHP Loader v4.0.9, Copyright (c) 2002-2011, by ionCube Ltd., and

with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies

with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

 

php 에 ioncube 연동 확인하였으나 apache 를 재시작해주어야 비로소 사용이 가능해집니다.

 

# /usr/local/apache/bin/apachectl restart

반응형

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

mysqli 설치  (0) 2015.01.16
pdo_mysql 확장 모듈 설치  (0) 2015.01.16
다른 도메인 세션 저장 (db)  (0) 2015.01.16
php 파일 실행하기  (0) 2015.01.16
mysql 5.2.10 설치중 PEAR문제  (0) 2015.01.16

댓글()

다른 도메인 세션 저장 (db)

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

이전의 방법은 php.ini 를 일일이 수정해 줘야 하기땜에 손이 많이 갑니다


나아진점은 
1. 세션값을 디폴트는 /tmp 밑에 저장하는데 이걸 mysql 을 이용합니다... 
   이렇게 하면 속도도 빨라지고 혹시 서버가 별개이어도 mysql 만 접근이 가능하면 문제

가 되지 않습니다. 
2. php.ini 는 전혀 수정하실 필요 없습니다. (소스상에서 설정 다 바꾸어 줍니다)

머 이정도네요....


설명 들어갑니다...

1. 먼저 아래처럼 session.inc 라는 파일이 있습니다..


[session.inc]

<? 
/* ------------------------------------------------------------------------ 
* Create a new database in MySQL called "sessions" like so: 

* CREATE TABLE sessions ( 
*      sesskey char(32) not null, 
*      expiry int(11) unsigned not null, 
*      value text not null, 
*      PRIMARY KEY (sesskey) 
* ); 
*/

$SESS_DBH = ""; 
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

function sess_open($save_path, $session_name) 

global $SESS_DBH;

$SESS_DBH = mysql_pconnect("localhost", "heal", "moga33") or die("Can't connect to

SQL Server"); 
mysql_select_db("heal", $SESS_DBH) or die("Can't connect to SQL Server");

return true; 
}

function sess_close() 

return true; 
}

function sess_read($key) 

global $SESS_DBH, $SESS_LIFE;

$qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time(); 
$qid = mysql_query($qry, $SESS_DBH);

if (list($value) = mysql_fetch_row($qid)) { 
return $value; 
}

return false; 
}

function sess_write($key, $val) 

global $SESS_DBH, $SESS_LIFE;

$expiry = time() + $SESS_LIFE; 
$value = addslashes($val);

$qry = "INSERT INTO sessions (sesskey,expiry,value) VALUES ('$key', $expiry,

'$value')"; 
$qid = mysql_query($qry, $SESS_DBH);

if (! $qid) { 
$qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey =

'$key' AND expiry > " . time(); 
$qid = mysql_query($qry, $SESS_DBH); 
}

return $qid; 
}

function sess_destroy($key) 

global $SESS_DBH;

$qry = "DELETE FROM sessions WHERE sesskey = '$key'"; 
$qid = mysql_query($qry, $SESS_DBH);

return $qid; 
}

function sess_gc($maxlifetime) 

global $SESS_DBH;

$qry = "DELETE FROM sessions WHERE expiry < " . time(); 
$qid = mysql_query($qry, $SESS_DBH);

return mysql_affected_rows($SESS_DBH); 
}

session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write",

"sess_destroy", "sess_gc"); 
session_set_cookie_params(0, "/", ".url.com");

session_start();

?>



이 파일이 젤 중요한데요... 
요걸 세션을 쓰는곳마다 (그니까 session_start() 가 쓰이는 곳) 마다 첨부시켜주세요.... 
젤 위부분에 보면 테이블이 있습니다. 이거 mysql 에 만들어 주세요. 세션이 저장될 테이

블입니다. 
글구 젤 밑에서 두번째 줄에 보면 
session_set_cookie_params(0, "/", ".url.com"); 
이게 있는데여 요걸 그쪽 도메인에 맞게 수정해 주세요...



2. 그리구 테스트 해보는 파일....

[session.php]

<?

include "session.inc";

if ($mode == 'login') 
{

if ( $logid=='toughing' && $passwd=='aaaa' ) 

echo(" 
Login OK....<br> 
");

$_logid = $logid; 
$_passwd = $passwd; 
session_register("_logid"); 
session_register("_passwd");

echo(" <meta http-equiv='Refresh' content='1; URL=session1.php'> "); 

else 

echo("Login Failure....<br>");

echo(" <meta http-equiv='Refresh' content='3; URL=$PHP_SELF'> "); 
}

exit; 

else if ($mode == 'logout') 

session_unregister("_logid"); 
session_unregister("_passwd");

echo(" <meta http-equiv='Refresh' content='0; URL=$PHP_SELF'> "); 
}

//sess_gc(1); 
echo(" 
  <form name='log' action='$PHP_SELF' method='post'> 
<input type=hidden name=mode value=login> 
아이디 <input type=text size=10 name='logid' style='border : 1 solid #666666;

font-family : 돋움'><br> 
암호 <input type=password size=10 name='passwd' style='border : 1 solid #666666;

font-family : 돋움'><br> 
<input type=submit value='확인'> 
  </form> 
");

?>



[session1.php]

<? 
include "session.inc";

if ($_logid && $_passwd) 

echo(" 
이 페이지는 로그인을 한 사람만 볼 수 있당..<br> 
<a href='test.php'>갈은 도메인</a> 
<a href='http://www.hul.com/test.php?$SID'>다른 도메인</a> 
<form name='log' action='session.php' method='post'> 
<input type=hidden name=mode value=logout> 
<input type=submit value='로그아웃'> 
</form> 
"); 
$ss = session_get_cookie_params(); 
echo("^$ss[lifetime]^$ss[path]^$ss[domain]^"); 
exit; 
}


echo("아무나 다 보는 페이지..<br>");

?> 


[출처] 바게의 열린공간 | BAGE (http://blog.bagesoft.com/197)

반응형

댓글()

php 파일 실행하기

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

1. php 로 실행

/usr/local/php/bin/php /home/sysdocu/public_html/test.php

 

2. lynx 로 실행

# lynx http://sysdocu.tistory.com/test.php -dump

 

만약 lynx 실행파일이 없다면 아래와 같은 명령으로 패키지를 설치하면 됩니다.

# yum install lynx

반응형

댓글()