이 기사에서는 php.ini 파일의 "disable_functions" 지시문을 편집하여 PHP 기본 기능을 활성화 또는 비활성화하는 단계별 절차를 제공하고 싶습니다.
시스템과 프로덕션 환경의 호환성을 수용하기 위해 서버의 기본 PHP 구성을 사용자 정의해야 하는 경우가 있습니다.
저는 Laravel 및 Symfony용 실시간 모니터링 패키지인 Inspector.dev의 작성자입니다. 이 패키지는 pro_open 및 proc_close PHP 기본 함수를 사용하여 서버에서 Inspector API로 비동기적으로 데이터 전송을 수행합니다.
기본적으로 활성화된 PHP의 기본 CURL 기능을 사용하도록 구성할 수도 있지만 이 경우 Sentry, Bugsnag 등과 같은 다른 패키지와 마찬가지로 동기 방식으로 모니터링 데이터를 Inspector에 보냅니다. 이는 PHP 엔진이 클라이언트와의 연결을 종료하기 전에 기다려야 하기 때문에 애플리케이션 속도가 약간 느려질 수 있음을 의미합니다.
최근 일부 개발자들이 PHP 구성에서 proc_open 및 proc_close 기능이 비활성화되어 비동기 데이터 전송을 활용하려면 해당 기능을 잠금 해제해야 하기 때문에 저에게 연락했습니다.
매우 드물지만 이 사용 사례에 대한 지원 리소스로 이 튜토리얼을 작성하기로 결정했습니다.
php.ini 파일은 PHP용 구성 파일입니다. 파일에는 "지시문"이라는 키/값 쌍 목록이 포함되어 있습니다. 지시문은 여러 섹션으로 그룹화되어 있지만 주로 조직화 목적으로 사용됩니다.
PHP가 시작되면 이 파일을 읽고 내부 데이터 구조를 설정하여 구성을 저장합니다. 실행 전반에 걸쳐 PHP는 이러한 내부 데이터 구조를 참조하여 오류 처리 및 로깅, 리소스 제한(메모리, 실행 시간), 파일 업로드, 데이터베이스 연결 등과 같은 여러 주요 영역에서 어떻게 작동해야 하는지 결정합니다.
궁금하신 분들을 위해 말씀드리자면: PHP는 php.ini 파일이 없어도 작동할 수 있으며 모든 지시문에 기본값을 적용하기만 하면 됩니다.
익숙하지 않은 분들을 위해 다음은 php.ini 파일의 예입니다:
https://github.com/php/php-src/blob/master/php.ini-production
php.ini 파일을 편집하면 PHP 코드 내에서 호출할 수 없는 기본 PHP 기능을 비활성화할 수 있습니다.
때때로 이 기능은 공유 호스팅 환경에서 일부 기능을 잘못 사용하면 다른 사용자에게 보안 문제를 일으킬 수 있으므로 일부 기능의 사용을 제한하는 데 사용됩니다. exec()와 같은 함수는 일반적으로 비활성화되어 있지만 때로는 서버 공급자가 너무 보수적이어서 일상적인 프로그래밍 작업에 필요한 기능을 비활성화할 수 있습니다.
컴퓨터의 터미널에서 아래 명령을 실행하여 파일의 현재 위치를 가져옵니다(Win과 Unix 모두에서 작동함):
php --ini
공통 위치: /etc/php.ini, /etc/php/8.x/php.ini (x를 설치 버전 번호로 교체)
서버의 파일을 편집하려면 모든 Unix 시스템에서 사용할 수 있는 vim 편집기를 사용하는 것을 선호합니다.
// Use the file path from the command above sudo vim /etc/php.ini
"disable_functions" 지시문까지 아래로 스크롤합니다. 이는 파일의 전반부에 있어야 하며 쉼표로 구분된 함수 목록을 포함합니다.
disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
새 구성을 로드하려면 PHP를 다시 시작해야 합니다. 아래 지침은 대부분의 서버에서 작동합니다. 결국 Google에서 특정 OS를 검색할 수 있습니다.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
더 많은 기술 관련 기사를 보려면 Linkedin이나 X에서 저를 팔로우하세요.
Inspector는 소프트웨어 개발자를 위해 특별히 설계된 코드 실행 모니터링 도구입니다. 서버 수준에서는 아무것도 설치할 필요가 없습니다. Laravel 또는 Symfony 패키지만 설치하면 바로 사용할 수 있습니다.
HTTP 모니터링, 데이터베이스 쿼리 통찰력, 경고 및 알림을 선호하는 메시징 환경으로 전달하는 기능을 찾고 있다면 Inspector를 무료로 사용해 보세요. 계정을 등록하세요.
또는 웹사이트에서 자세한 내용을 알아보세요: https://inspector.dev
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3