'삽질기행/해결된 삽질'에 해당되는 글 43건

  1. 2006.10.18 Qmail 사용자 계정 추가 스크립트
  2. 2006.10.18 Windows + Apache + FirebirdSQL + PHP
  3. 2006.10.18 PHP에서 Windows의 COM 사용
vpopmail 없이 qmail 만을 이용해서 사용할 때 그나마 좀 편리해지라고 삽질 해봤다.

#!/bin/bash
##################################################
DIR_BASE=/home/MailHome
QM_BIN_DIRMAKE=/var/qmail/bin/maildirmake
QM_DIR_NAME=Maildir
GID=mailusers
if (test -z $1); then
       echo "usage : $0 [mailuserid]"
else
       UID=$1
       DIR_HOME=${DIR_BASE}/${UID}
       DIR_USER_MAIL=${DIR_HOME}/${QM_DIR_NAME}
       useradd -g ${GID} -s /sbin/nologin -d ${DIR_HOME} ${UID}
       RETVAL=$?
       # when account create successfully
       if (test $RETVAL -eq 0); then
               rm -rf ${DIR_HOME}/.[a-zA-Z0-9]*
               ${QM_BIN_DIRMAKE} ${DIR_USER_MAIL}
               chown ${UID}.qmail -R ${DIR_USER_MAIL}
               chmod 770 -R ${DIR_USER_MAIL}
               passwd ${UID}
       fi
fi

추가 과정 :
쉘 접속이 불가능한 계정을 추가한다.
계정 추가에 성공하면:
해당 계정 홈디렉토리에 숨겨진 파일들을 지워버린다.
홈디렉토리 안에 Maildir 을 생성한다(qmail 메일 디렉토리)
생성한 메일디렉토리에 qmail 데몬이 접근할 수 있도록 한다.
추가한 계정의 패스워드를 정한다.

1. 사용자 추가
2. (아이디 중복 등) 사용자 추가에 실패시
3. 사용자 제거
Posted by freezn
TAG Linux, qmail

댓글을 달아 주세요

작은 프로젝트에서 Windows + Apache + FirebirdSQL + PHP를 사용할 일이 있었습니다.
이 내용은 그 때 정리한 것입니다.

다들 아시겠지만 FirebirdSQL은 Borland Interbase 6.x대에서 오픈소스화 된 프로젝트로 무료로 사용가능하며 아주 작고 강력한 DBMS입니다.
이러한 특성때문에 많은 프로그램에서 자신들의 프로그램에 포함시켜 설치를 제공하는 곳이 많으며 Interbase와는 많은 호환이되어 PHP에서도 Interbase용 함수를 사용합니다.

--------------------------------------------------------------------
- Apache1.3 + FireBird 1.5 + PHP4.3 설치 과정

1. 버전
. Apache 1.3.33 - http://httpd.apache.org
. PHP 4.3.10 - http://php.net
. Firebird 1.4.2.4731 - http://firebirdsql.org



2. 설치파일들
. apache_1.3.33-win32-x86-no_src.exe
. php-4.3.10-Win32.zip
. Firebird-1.5.2.4731-Win32.exe


Apache와 Firebird는 설치, php는 적당한 경로에 압축을 풀어주세요.

3. httpd.conf 파일 설정
= httpd.conf에 다음과 같은 내용을 추가한다.

############################################################################
# Config for PHP4 on Apache 1.3.33
############################################################################
# 주의1. 아파치 설정에서 경로는 대신 /을 사용할 것.
# 주의2. 경로는 자신의 경로로 바꿀 것
AddType application/x-httpd-php .php
# For PHP 4
LoadModule php4_module "C:/PHP/sapi/php4apache.dll"
# specify the directory where php.ini is
SetEnv PHPRC "C:/PHP"
############################################################################

= httpd.conf 에서 DirectoryIndex 을 찾아 index.html 뒤에 index.php 를 추가한다.



4. PHP 설정
= PHP디렉토리의 php4ts.dll 파일을 windows 디렉토리로 복사
= PHP디렉토리의 php.ini-dist 파일을 php.ini 파일로 이름을 변경하여 window 디렉토리로 복사
= Interbase 의 사용을 위해 PHPdlls 에 있는 gds32.dll 을 windows의 system32 에 복사 (이미 존재할 시 덮어씌울 필요는 없음, 버전이 새로운 것이 높다면 덮어씌우면 됨)


= php.ini 에서 수정할 사항

; extension_dir = "C:PHPextensions"의 주석 제거
; (만약 extension_dir 의 경로가 다르다면 맞는 경로로 설정)
; extension=php_interbase.dll ;주석 제거
; magic_quotes_sybase 을 On으로


= php.ini 에서 추가할 사항

; 만약 이미 존재한다면 옵션만 수정할 것
[InterBase]
ibase.allow_persistent PHP_INI_SYSTEM
ibase.max_persistent PHP_INI_SYSTEM
ibase.max_links PHP_INI_SYSTEM
ibase.default_db PHP_INI_SYSTEM
ibase.default_user PHP_INI_ALL
ibase.default_password PHP_INI_ALL
ibase.default_charset PHP_INI_ALL
ibase.timestampformat PHP_INI_ALL
ibase.dateformat PHP_INI_ALL
ibase.timeformat PHP_INI_ALL




--------------------------------------------------------------------
- 설정 확인.
htdocs 에 php 파일을 하나 만들고 phpinfo(); 함수를 넣어봅니다.
웹으로 접속해봅시다.

보라색표에 PHP로고와 PHP Version 4.3.10 같은 문구가 나타났나요?
이제 ctrl+f로 interbase를 검색해봅시다.
관련 항목들이 나오며 Interbase Support enabled 로 나오나요?

그렇다면 설정이 제대로 된 것 입니다.^^



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


설정 내용들의 간단한 설명

1. httpd.conf 의 설정에서.

다들 아시겠지만 httpd.conf는 아파치웹서버의 설정파일이다.
PHP 스크립트를 사용하기위해 아파치를 많이들 이용하며,

Windows상에서의 Apache+PHP연동에 대한 자료를 찾아보면 php.exe를 이용하는 방법이 많이 나와있다.
이런 팁들에서 특이한건 PHP모듈을 로딩해놓고도 php.exe를 이용한다는 것이다.
(이런 내용의 설정이다. Action application/x-httpd-php "/php/php.exe")

설치문서를 찾아보면 보안문제를 비롯한 여러문제로 인해 php.exe를 이용하는 방법은 권장하고 있지 않으며, php-apache 모듈의 이용을 권장하고 있다.

정확하지 않은 카더라통신 수준의 기억에 의하면 Windows 9X대 에서는 php.exe를 이용하는 수밖에 없기 때문에 그와같은 설정을 했던 것 같다.


2. PHP설정단계에서.
php4ts.dll 의 역할은 정확하게 기억나지 않는다. -_-;

php.ini 는 다들 아시겠지만 php의 설정파일이다. 나중에 메모리 제한등을 여기서 해결할 수 있다.

gds32.dll 은 GD라이브러리가 아닌 Interbase 연결을 위한 라이브러리이다. (에러가 나더라도 GD관련 에러로 착각하지 말자.)

3. php.ini수정에서.
magic_quotes_sybase 을 On으로 바꾸는 것은 Interbase/Firebird 관련 함수를 사용하기위해서 이렇게 하라고 http://kr2.php.net/ibase 에 나와있다. (왠지는 모른다.)

extension=php_interbase.dll 의 주석해제는 Interbase/Firebird 관련 함수가 들어있는 라이브러리 모듈을 활성화 시키는 것이다.
만약 이 라인을 그대로 주석인채 서비스를 연결해보면 관련 함수가 연결단부터 없는 함수라는 메세지를 보여줄 것이다.

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

발견된 문제 #1
FirebirdSQL 을 Zip Binary(파일명 Firebird-1.5.2.4731_win32.zip) 으로 설치하였을 경우 Undefined service gds_db/tcp 라는 요상한메세지가 나오며 DB연결에 실패한다.
물론 설정 확인에서도 정상이었다.
- 해결책
FirebirdSQL을 Install 버전으로 설치한 후 다시 Uninstall 하고 FirebirdSQL을 다시 설정하면 정상적으로 된다. 이유는 아직 파악하지 못하였다.
아마 서비스등록과 레지스트리 등록외에도 무언가 필요한게 남는 것 같지만 좀더 알아봐야할 것 같다.

...윈도우즈system32driversetcservices 라는 파일이 있다.
이 파일에 gds_db 3050/tcp 식의 3050 tcp포트를 정의한 라인이 있는지 확인해보자. listening 포트를 정의하는 이 파일인 이것에 굳이 추가하지 않아도 되지만 좀더 확연한 처리를 위해 등록하곤 한다.

이것을 추가하는 것으로 해결이되었다.
특이한 것은 인스톨 버전에서는 이러한 내용이 없는 것으로 보아 다른 방법을 사용하는 것 같으며, 마지막
(뉴라인or 엔터) 를 잊지 말자.
Posted by freezn

댓글을 달아 주세요

웹페이지 소스를 긁어오려는데 IE가 아니면 막아놨다?
각종 꽁수로 "난 IE야~" 라고 우겨도 안된다?

그럼 이렇게...

예제 :

// alloc COM (IE)
$ie = new COM("InternetExplorer.Application");
// $ie->Visible = false; // 이런 것도 가능...

$ie->Navigate($url);
while($ie->readyState!=4); // Loading Complete 확인??

$srcHTML = $ie->Document->documentElement->outerHTML;

// free object
$ie->Quit();
unset($ie);

필요사항 :

- PHP >= 5
- OS는 역시 Windows
- 해당 컴포넌트가 윈도우에 등록 되어 있어야 함

MS Word, MS Excel, MS Access 등 M$오피스들은 COM객체를 거의 제공함 ㅡㅡ;;
Posted by freezn

댓글을 달아 주세요