[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

반응형

댓글()

mysql 5.2.10 설치중 PEAR문제

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

5.2.10 을 깔면은 대체적으로 비슷한 사람들에게 =_= 대부분 문제가 생기는거 같다.
이거 생각외로 꽤 Critical 한 문제인데 왜 대책을 안세우는지 이해가 안가는... 
결론부터 이이야기하자면은,  별거 -_- 아닌거 가지고 잘못 빌드한거 같은데.. ;; 암튼 간단하게 해결 가능하다

1. 증세
 - make test를 반드시 해보자 
 - php 컴파일할때 대부분 귀찮아서 안하는데,  시간이 튀어서 하는게 아니다.  에러가 난다고 하면은 분명 뭔가가 이상이 있다는거다. 
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391 

뭔가 위에 메시지하고 비슷한 에러메시지가 보일거다. 

2. 해결 방법 
http://www.pear-forum.org/post-5065.html
맨 아래 보면은 '님들아 저 해결했어요 ;ㅁ;'라고 적혀 있어서 찾아보니깐 정말 되더라는...

php설치된 디렉토리에 하부 .channels 라는 디렉토리가 있는데 이 내용만 다 지워주면 끗.


[출처] Gallery-하나둘셋넷...너에게로 | Bani (http://lunne.egloos.com/1943059)

반응형

댓글()

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

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

PHP5 설치시 아래와 같은 에러메세지가 나온다면 설치에 필요한 구성요소를 미리 설치하면 됩니다.

 

[증상]

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

 

[해결]

# yum -y install libc-client libc-client-devel


안될경우 아래와 같이 수동 설치



[
libc-client-devel설치]

# cd/usr/local/src

wget https://www.mirrorservice.org/sites/ftp.cac.washington.edu/imap/imap-2007f.tar.gz

# tar xvzf imap-2007f.tar.gz

# cd imap-2007f

# yum -y install pam-devel

make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd EXTRACFLAGS=-fPIC IP=4

# mkdir /usr/local/imap-2007f/

# mkdir /usr/local/imap-2007f/include/

# mkdir /usr/local/imap-2007f/lib/

# cp c-client/*.h /usr/local/imap-2007f/include/

# cp c-client/*.c /usr/local/imap-2007f/lib/

# cp c-client/c-client.a /usr/local/imap-2007f/lib/libc-client.a



* php 컴파일중 

에러 : configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

해결 : imap-2007f 설치 후 --with-imap=/usr/local/imap-2007f 옵션을 사용합니다.



반응형

댓글()

php 컴파일시 Cannot find libmysqlclient_r 오류 발생처리

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

작업환경)
* Pentium 820D / 1G / 250G / RHEL 4-2.6.20.7
* mysql 5.0.41 confugure 설정
./configure --prefix=/usr/local/mysql --with-charset=euckr
* apache 2.2.4 configure 설정
 ./configure --prefix=/usr/local/httpd2 --enable-mods-shared=most --enable-module=so --with-mpm=worker
* php 5.2.2 configure 설정
./configure --with-apxs2=/usr/local/httpd2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/httpd2/conf --with-exec-dir=/usr/local/httpd2/bin --enable-track-vars --enable-trans-sid
* 컴파일 순서 : mysql -> apache -> php
------------------------------------------------
mysql과 apache는 올바르게 컴파일되어 서비스가 제공 되었으나 php 컴파일이 올바르게 되지 않았습니다.
(중략)
configure: error: Cannot find libmysqlclient_r under /usr/local/mysql
Note that the MySQL client library is not bundled anymore!

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a    libmyisammrg.a    libmysqlclient.so.15    libmysys.a    libheap.a    
libmysqlclient.a    libmysqlclient.so.15.0.0    libvio.a    libmyisam.a  libmysqlclient.la  
libmysqlclient_r.so  libmysqlclient.so    libmystrings.a

원인)
libmysqlclient_r 이 mysql을 컴파일 할 때 생성되지 않아서 생기는 문제입니다.
Apache 가 Thread 모드로 설치되어있으나, MySQL 은 Thread Safe 옵션을 주지 않았기 때문입니다.
맨 처음 Apache 를 컴파일 할 때 --with-mpm=worker 옵션으로 MPM 방식을 Worker 로 지정하였습니다. Worker 방식의 경우 Thread 단위로 요청을 처리하지만 mysql 은 Thread 처리를 하도록 컴파일 되지 않았기 때문에 PHP 컴파일을 하면서 오류가 발생한 것입니다. 물론 Apache 컴파일시 prefork (기본값)으로 설치시에는 이런 문제가 발생하지 않습니다.

해결방안)
mysql 컴파일 시 다음 옵션을 추가해 봅니다.
--enable-thread-safe-client

# ./configure --prefix=/usr/local/mysql --with-charset=euckr --enable-thread-safe-client && make &&make install

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a    libmyisammrg.a     libmysqlclient_r.a   libmysqlclient_r.so.15      libmysqlclient.so.15      libmysys.a
libheap.a    libmysqlclient.a   libmysqlclient_r.la  libmysqlclient_r.so.15.0.0  libmysqlclient.so.15.0.0  libvio.a
libmyisam.a  libmysqlclient.la  libmysqlclient_r.so  libmysqlclient.so           libmystrings.a

mysql library 디렉토리에 libmysqlclient_r  가 올바르게 생성되었습니다. 

이제 php를 다시 컴파일 하면 됩니다.

 

[출처] 그런즉 선 줄로 생각하는 자는 넘어질까 조심하라 | 아스라다 (http://blog.naver.com/01191879872?Redirect=Log&logNo=10017203362)

반응형

댓글()

Warning: main(): URL file-access is disabled in the server

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

php.ini 파일을 열어 아래와 같이 변경 해주고, httpd 를 재시작 해줍니다.

 

allow_url_fopen = On        // 기본값 Off

반응형

댓글()

/usr/lib/libltdl.so: could not read symbols: File in wrong format

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

php 4.3.10, php 5.2.9 에서 오류 확인


[make 오류]

/usr/bin/ld: skipping incompatible /usr/lib/libcrypt.so when searching for -lcrypt
/usr/bin/ld: skipping incompatible /usr/lib/libcrypt.a when searching for -lcrypt
/usr/bin/ld: skipping incompatible /usr/lib/libc-client.so when searching for -lc-client
/usr/bin/ld: skipping incompatible /usr/lib/libc-client.a when searching for -lc-client
/usr/bin/ld: skipping incompatible /usr/lib/libcrypt.so when searching for -lcrypt
/usr/bin/ld: skipping incompatible /usr/lib/libcrypt.a when searching for -lcrypt
/usr/bin/ld: skipping incompatible /usr/lib/librt.so when searching for -lrt
/usr/bin/ld: skipping incompatible /usr/lib/librt.a when searching for -lrt
/usr/lib/libltdl.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [libphp5.la] 오류 1

 

[조치]

ln -sf /usr/lib64/libltdl.so /usr/lib/libltdl.so  

create symbolic link `/usr/lib/libltdl.so' to `/usr/lib64/libltdl.so'

이후 make clean, make 실행

반응형

댓글()