프로그래밍/PHP

개발계/운영계 PHP 서버 환경 맞추기

채윤아빠 2019. 1. 29. 13:49
728x90
반응형



문제점

  • 개발계 소스 전체를 그대로 복사하여, Apache24 + PHP7 + MariaDB 에서 서비스를 시작하면, 최초 로그인 페이지까지는 정상적으로 표시되었습니다.
  • 하지만, 로그인부터 오류가 발생하여 CI를 최신 버전으로 업데이트한 이후에 로그인은 가능하지만, 몇몇 소스에서 오류가 발생하며 정상적으로 동작되지 않습니다.
  • 전체적으로 개발계와 운영계가 다른 모습으로 동작을 하는데, 주요 이유는 개발계와 운영계의 php.ini 설정이 서로 달라서 발생하는 문제인 것으로 예상됩니다.

원인 분석

  • 개발계(dev.hbesthee.kr) PHP7 버전 확인 ; PHP 7.0.16 (cli) (built: Mar 3 2017 13:05:33) ( NTS )
    • PHP7 버전 정보
      $ /opt/php/bin/php --version
      
      PHP 7.0.16 (cli) (built: Mar  3 2017 13:05:33) ( NTS )
      Copyright (c) 1997-2017 The PHP Group
      Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
          with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies
      
    • 개발계 php.ini 다운로드 : /opt/php/lib/php.ini
    • 로컬에 설치한 PHP7 (v7.2.12)의 기본 "php.ini"와 설정 비교 분석

    • 개발계에서는 "production" 설정을 로컬 및 운영계에서는 "development"을 기본 설정으로 사용
    • 이 때문에 다수의 설정이 서로 달랐음

수정 내용

  • 로컬 및 운영계의 "php.ini" 설정을 개발계와 맞춤
  • 하지만, 보안 및 개발에 있어서 내부 정책에 반하는 민감한 부분도 있기 때문에 커널스에 "php.ini" 설정 수정 요청 필요
  • 다음 설정들을 로컬에 적용함
    short_open_tag = On
    
    serialize_precision = 17
    
    expose_php = Off
    
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    
    display_errors = Off
    
    display_startup_errors = Off
    
    ;error_log = php_errors.log
    
    post_max_size = 20M
    
    ; extension_dir = "ext" 
    
    upload_max_filesize = 20M
    
    max_file_uploads = 30
    
    allow_url_fopen = Off
    
    date.timezone = Asia/Seoul
    
    mail.add_x_header = On
    
    [SQL]
    ; http://php.net/sql.safe-mode
    sql.safe_mode = Off
    
    mysqlnd.collect_memory_statistics = Off
    
    zend.assertions = -1
    
    • "display_errors", "display_startup_errors" 두 설정은 "On"으로 해도 문제가 없다면 "On"으로 해두고 개발할 것
    • "post_max_size' 설정은 로컬에서는 "300M"으로 되어 있음 ; 수정하지 않음
    • "extension_dir" 서버에서는 xDebug 설정을 하지 않았으므로 수정하지 않음
    • "upload_max_filesize" 설정은 로컬에서는 "200M"으로 되어 있음 ; 수정하지 않음