공개 웹 애플리케이션이 구성을 위해 ini 파일을 사용하지 않는 이유


10

거의 모든 공개 CMS는 데이터베이스 설정 등에 .php 구성 파일을 사용합니다. 예를 들어 WordPress는 설치할 때 .php 구성 파일을 자동으로 만듭니다.

왜 그냥 .ini 파일을 사용하지 않습니까? PHP에는 이미 parse_ini_file ()이 있으며 다른 언어에도 비슷한 기능이 있다고 확신합니다.

답변:


9

특히 PHP로; .ini 파일과 .conf.php 파일의 차이점은 무시할 만합니다.

구성에 PHP를 직접 사용하면 구성을 위해 잘 정의 된 이식 가능한 구문 하나만 관련하면된다는 분명한 이점이 있으며 구성 파일이 제대로 코딩되어 있다는 사실이 때때로 유용합니다.

그것에 비해; ini 파일은 제공 할 것이 거의 없습니다. 와 include, require와는 require_once잘 알려진하고 (대부분) 잘 이해.


relate to one well-defined, portable syntax for configuration나는 그것을 얻지 못한다. ini 파일에는 잘 정의되고 이식 가능한 구문도 있습니다. 모든 .conf.php파일은 자체 구조를 가지고 있으며 대부분 배열 기반이지만 ini 파일과 크게 다르지 않습니다.
yannis

7
또한 PHP 파일은 기본적인 보안을 제공 할 수 있습니다. Joomla가 .ini구성을 저장하기 위해 XML 또는 파일을 사용한 경우 구성에 공개적으로 액세스 가능한 위치에서 실행중인 구성이 잘못되어있는 인스턴스가 많을 것입니다. 이는 일반적으로 좋지 않습니다. PHP 파일을 사용하면 서버의 내용을 방문자에게 제공하도록 서버를 잘못 구성하는 경우는 매우 드 rare니다.
Tom Marthenal

4

일반적으로 말하자면 .iniXML 구성 파일을 선호 합니다. 대규모 시스템에서는 종종 개발자 이외의 사람이 구성 값 (DBA 또는 sysadmin)을 변경해야합니다. 내가 아는 대부분의 DBA 및 sysadmin은 간단한 PHP 스크립트를 탐색하는 데 아무런 문제가 없지만 그렇지 않은 경우 선호합니다. 하나의 작은 실수는 몇 가지 방법으로 전체 응용 프로그램에 해를 끼칠 수 있습니다.

그러나 소규모 시스템에서는 구성에 PHP 스크립트를 사용하는 것이 매우 편리합니다. 나는 오늘 AWS SDK 로 놀고 있었고 구성을 위해 PHP 스크립트도 사용합니다.

CFCredentials::set(array(
    'development' => array(
        'key' => 'xxx',
        'secret' => 'xxxx',
        'default_cache_config' => sys_get_temp_dir(),
        'certificate_authority' => true
    ),
    '@default' => 'development'
));    

를 하드 코딩하는 대신 default_cache_config시스템 온도를 전달하면 스크립트를 배포하는 모든 시스템에서 작동합니다. 이 스크립트는 약 10 명의 개발자에게 전달되는 작은 개념 증명이며, 생각할 필요없이 그대로 실행하기를 원합니다. 프로토 타입이 진화하면 XML 구성 클래스를 사용하여 하드 와이어를 연결합니다 (그리고 파일 시스템 캐시에 의존하지 않음).


"일단의 작은 실수는 몇 가지 방식으로 전체 응용 프로그램에 해를 끼칠 수 있습니다." ini에 유효하지 않은 값은 아니지만? 아니면 XML이 더 친근한가요?
whatsisname

@whatsisname 일반적으로 잘못 설정된 구성 값으로 인해 시스템이 손상되면 문제가 발생하는 것입니다. 스크립트 구성에서 의도하지 않은 코드 조각에 대해 생각했습니다. 극단적 인 일을 한 번 이상 경험했습니다. ini / xml 파일로는 불가능합니다. 가장 중요한 점은 스크립트 구성이 개발자가 아닌 사람과 공유하고 싶지 않다는 것입니다.
yannis

3

대답은 간단합니다. conf.php에는 기본적으로 작동하는 데 필요한 작업이 없습니다. 다른 소스 파일 일뿐입니다.


0

캐싱없는 속도도 이유가 될 수 있습니다. 필요한 경우 PHP 설정을 투명하게 opcode 캐시 할 수 있습니다. INI 파일은 읽을 때마다 텍스트 구문 분석이 필요하며 직접 캐시를 작성해야합니다. 작은 파일의 경우는 괜찮지 만 모든 요청에서 수백 줄의 구문이 분석되면 수십 밀리 초까지 올릴 수 있습니다. 이는 200ms 최적화 된 웹에는 상당히 많은 양입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.