커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 프로그래밍 / 개발 > 웹 프로그래밍 / PHP 도움말
검색 : 사이트 WHOIS 웹서버 종류


  FreeBSD 4.x에서 php 5.2.x(또는 4.4.x) 컴파일 작성일 : 2007/03/15 16:30
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 8052
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : FreeBSD 4.x에서 php 5.2.x(또는 4.4.x) 컴파일시 문제
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2007.3.7(수)

    FreeBSD 4.x에서는 최근에 나온 php 5.2.1(또는 4.4.6) 버전을 컴파일할 때 다음과 같은 오류가 발생할 수 있다. (FreeBSD 6.x에서는 정상적으로 컴파일됨)

     ext/standard/.libs/basic_functions.o: In function `zif_getopt':
    ext/standard/.libs/basic_functions.o(.text+0x1c8b): undefined reference to
    `getopt_long'
    *** Error code 1

    Stop in /usr/ports/lang/php5/work/php-5.2.1.
    *** Error code 1
     


    1. getopt() 함수 이해

    위 에러를 설명하기 전에 php의 getopt() 함수에 대한 이해(C개발자는 getopt(), getopt_long() 에 대해서는 잘 알거라. ^^)가 필요하다. 프로그램을 실행할 때 -h, -l, ... 등의 옵션을 사용할 경우가 있는데, 이런 옵션을 간단히 처리해주는 함수가 getopt()이다.
    예를 들어 -u, -i, -s, -h 옵션을 사용하고, 옵션 뒤에 인자값(cf, 192.168.123.12, coffeenix)이 따라오는 경우를 살펴보자. 옵션뒤에 인자값이 있다면 getopt()함수에서 옵션 문자뒤에 : 을 붙여준다.

    [ opt.html ]
     <?
    $option = getopt('u:i:s:h:');
    print_r($option);
    ?>
     


    [ opt.html 실행시 옵션을 넣는 예 ]
     # php opt.html -u cf -i 192.168.123.12 -s coffeenix
    Array
    (
        [u] => cf
        [i] => 192.168.123.12
        [s] => coffeenix
    )
     


    getopt() 함수에 대해서는 이해가 되었는가?
    FreeBSD에서는 php 5.2.1(또는 4.4.6) php소스중 ext/standard/basic_functions.c에 #define HARTMUT_0 이 정의되도록 패치를 했다. 이로 인해 C의 getopt_long()함수의 --h, --v와 같이 긴 옵션명을 처리할 수 있도록 했지만, FreeBSD 4.x에서는 컴파일시 에러가 발생한다.

    2. 에러 없이 컴파일하는 방법

    php에서 다음 조건에 해당된다면 /usr/ports/php4/files/ (php4 버전) 또는 /usr/ports/php5/files/ (php5 버전) 디렉토리의 patch-ext_standard_basic_functions.c 파일을 삭제 후에 컴파일하면 된다.

    - getopt() 함수를 사용하지 않는 경우
    - getopt() 함수를 사용하지만 긴 옵션명을 사용할 필요 없는 경우
    - getopt() 함수를 대체할 함수를 개인적으로 만들어 사용하는 경우

    3. 참고 자료

    * getopt
      http://www.php.net/manual/kr/function.getopt.php
    * php 용 getopt 함수 (shell mode) (글 김정균)
      http://kldp.org/node/48566

      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~