PHP 환경설정 파일(php.ini) 수정하기

Stock 551655884

PHP 환경설정 파일(php.ini)은 웹서버에서 실행되는 PHP 스크립트의 다양한 설정과 매개변수를 제어하기 위해 PHP 인터프리터에서 사용하는 구성 파일입니다. 이는 웹사이트나 웹 애플리케이션의 특정 요구 사항에 따라 PHP 동작을 커스터마이징 하는 데 중요한 역할을 합니다. php.ini 파일에 대해 알아봅니다.

PHP 환경설정(php.ini) 파일 개요

php.ini 파일은 [PHP], [Date], [Session] 등 여러 섹션으로 나누어져 있으며, 각 지시문에 값을 할당하여 특정 구성 설정을 정의하게 됩니다. 섹션 내 설정은 전역 설정보다 우선적으로 적용됩니다. 세미콜론(‘;’) 혹은 해시(‘#’)로 주석 처리나 지시문 비활성화를 합니다. phpinfo() 함수를 실행하면 php,ini 파일의 위치 및 PHP 구성 정보인 주요 지시문 값이 출력됩니다. ini_set() 함수를 사용하면 일부 지시문을 런타임에 수정 가능합니다. php.ini 파일에서는 특정 기능을 비활성화하고, 리소스 사용량을 제한하고, 오류 보고 설정을 조정하여 보안을 강화할 수 있습니다.

경우에 따라 서버 내 여러 개의 PHP 환경설정 파일이 있을 수 있는데, 주로 다음과 같은 시나리오입니다.

  1. 전역(Global) php.ini 파일: 이 파일은 서버의 모든 PHP 스크립트에 전역적으로 적용되는 기본 PHP 구성 파일로, PHP 설치 디렉터리에 위치하며 그 경로는 설치시 경로를 변경하지 않았다면 유닉스 기반 운영체제에서 ‘/etc/php/’ 디렉터리, 윈도우 운영체제에서 ‘C:\php\’ 디렉터리가 됩니다. 이 파일을 변경하면 전체 서버에 영향을 줍니다.
  2. 디렉터리별(Per-directory) php.ini 파일: 전역 php.ini 파일 외에도 디렉리별 구성 파일을 가질 수 있습니다. ‘.user.ini’라는 이름의 이러한 파일은 웹서버의 문서 루트 내 개별 디렉터리에 배치할 수 있습니다. 이 파일에 지정된 설정은 각 디렉터리와 그 하위 디렉터리 내의 PHP 스크립트에 적용되므로 특정 프로젝트에 대한 전역 설정을 재정의할 수 있습니다.
  3. 가상 호스트(Virtual Host) 혹은 서버 수준(Server-level) php.ini 파일: 아파치 같은 일부 웹서버에서는 httpd.conf 또는 가상 호스트 구성 파일과 같은 구성 파일을 사용하여 가상 호스트 또는 서버 수준에서 PHP 설정을 지정할 수 있습니다. 이러한 설정은 해당 가상 호스트 또는 서버에서 제공하는 모든 스크립트에 적용됩니다.

여러 개의 php.ini 파일을 보유하면 개발자와 서버 관리자가 다양한 프로젝트나 특정 요구 사항에 맞게 PHP 구성을 조정할 수 있다는 장점이 있습니다. 서버의 다른 부분에 영향을 주지 않으면서 성능, 보안 및 기능을 최적화하는 데 필수적인 수준의 세분화 및 사용자 정의 기능을 제공합니다.

PHP 환경설정(php.ini) 파일의 설정 항목 예

php.ini에서 설정할 수 있는 주요 항목들은 다음과 같습니다.

  • 오류 처리 및 보고 관련:
    display_errors: 오류가 발생할 때 오류 메시지를 표시할지 여부를 지정합니다.
    error_reporting: 오류 보고 수준을 설정합니다.
    log_errors: 오류를 서버의 오류 로그에 기록할지 여부를 지정합니다.
  • 리소스 허용 관련:
    max_execution_time: 스크립트 실행이 허용되는 최대 시간(초)을 설정합니다.
    memory_limit: 스크립트가 사용할 수 있는 최대 메모리를 지정합니다.
    max_input_time: 입력 데이터를 처리하는 최대 시간(초)을 설정합니다.
  • 파일 업로드 관련:
    upload_max_filesize: 업로드 가능한 파일의 최대 크기를 정의합니다.
    post_max_size: 전송 가능한 POST(양식) 데이터의 최대 크기를 지정합니다.
  • 세션 관련:
    session.save_path: 세션 파일이 저장될 디렉터리를 지정합니다.
    session.gc_probability: 세션 시작 시 가비지 콜렉터가 실행될 확률을 설정합니다.
  • 날짜 및 시간 관련:
    date.timezone: PHP 스크립트에서 사용되는 기본 시간대를 정의합니다.
  • 보안 관련:
    register_globals: 입력 데이터를 기반으로 전역 변수를 자동으로 생성할지 여부를 결정합니다. 보안상의 문제로 꺼두는 것이 일반적입니다.
    allow_url_fopen: PHP가 file_get_contents 및 include와 같은 함수를 사용하여 원격 파일을 열 수 있는지 여부를 지정합니다. 보안상의 문제로 꺼두는 것이 일반적입니다.
    disable_functions: 보안상의 이유로 비활성화된 기능을 나열합니다.
  • 성능 및 최적화 관련:
    opcache.enable: OpCode 캐시를 활성화하거나 비활성화합니다.
    opcache.memory_consumption: OpCode 캐시가 사용하는 메모리 양을 설정합니다.
  • 메일 관련:
    SMTP: 메일 전송을 위한 SMTP(Simple Mail Transfer Protocol) 서버를 지정합니다.
    sendmail_path: sendmail 프로그램의 경로를 지정합니다.
  • 데이터베이스 연결 관련:
    mysqli.max_links: MySQL 서버에 열려 있는 최대 링크 수를 설정합니다.

PHP 환경설정 변경하기 (feat. cPanel)

워드프레스가 PHP로 만들어졌기 때문에, 워드프레스 웹사이트를 운영하다 보면 PHP 환경설정을 변경해야 하는 경우가 생깁니다. 유료 플러그인이 많이 설치되어 있거나 기능이 다채로운 테마를 사용하는 웹사이트들은 아무래도 많은 시스템 리소스를 필요로 하기 때문에, php.ini 파일을 수정함으로써 서버 제한을 조정하게 됩니다. 이 때, 바로 전역 php.ini 파일에 접근하여 설정을 편집하려면 서버 수준의 권한이 필요하므로, 서버 컴퓨터의 모든 권한을 갖고 있는 상황이 아닌 일반적인 웹호스팅을 사용하는 경우라면 cPanel에서 MultiPHP INI Editor 소프트웨어를 사용하여 PHP 환경설정을 변경할 수 있습니다.

PHP 환경설정 파일(php.ini) 수정하기

블루호스트의 cPanel에서 PHP 환경설정을 변경해보겠습니다. 다른 웹호스팅의 cPanel도 인터페이스는 거의 동일하므로 참고하시면 됩니다. 블루호스트에 로그인 한 후 좌측의 Hosting 메뉴로 이동, 스크롤을 최하단으로 내려 cPanel의 퀵링크를 클릭합니다.

PHP 환경설정 파일(php.ini) 수정하기

cPanel에서 스크롤을 내리면 Software 섹션에서 MultiPHP INI Editor를 찾을 수 있습니다. 클릭합니다.

PHP 환경설정 파일(php.ini) 수정하기

MultiPHP INI 편집기는 .htaccess, .user.ini 및 php.ini 파일에 입력하며, 해당 파일 유형에 유효한 지시어인 경우에만 파일에 지시어를 기록합니다. 드롭다운 메뉴에서 PHP 환경설정을 변경하고자 하는 도메인을 선택합니다.

PHP 환경설정 파일(php.ini) 수정하기

‘Basic Mode’ 탭에서는 해당 도메인에서 변경 가능한 환경설정 지시문 목록이 나오고 우측에서 간단히 설정값을 입력할 수 있게 되어있습니다. 원하는 설정값을 업데이트하고 ‘Apply’ 버튼을 누르면, 상단에 명시된 Path, 보통 해당 도메인의 디렉터리 경로 내에 php.ini 파일이 생성됩니다.

PHP 환경설정 파일(php.ini) 수정하기

‘Basic Mode’에서 설정을 업데이트 한 후 php.ini 파일이 일단 생성되고 나면 ‘Editor Mode’ 탭의 텍스트 편집 모드를 이용하여 직접 지시문과 설정값을 변경할 수도 있습니다. php.ini 파일이 아직 생성되지 않은 상태에서 ‘Editor Mode’를 선택하면 ‘ini 설정 콘텐츠가 존재하지 않으니 추가하십시오’라는 안내 문구가 나옵니다.

PHP 환경설정이 잘못될 경우 웹사이트가 실행되지 않거나 서버 보안에 문제가 생길 수도 있으므로, php.ini 파일을 편집할 때는 신중하도록 하고, 지식이 충분하지 않은 경우에는 호스팅 서비스사의 고객센터와 상의하는 것이 좋습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *