CakePHP-프로젝트 구성

이 장에서 우리는 Environment Variables, General Configuration, Database ConfigurationEmail Configuration CakePHP에서.

ConfigurationCakePHP는 기본적으로 하나의 구성 파일과 함께 제공되며 필요에 따라 수정할 수 있습니다. 전용 폴더가 하나 있습니다.“config”이 목적을 위해. CakePHP에는 다양한 구성 옵션이 있습니다.

CakePHP의 환경 변수를 이해하는 것으로 시작하겠습니다.

환경 변수

환경 변수를 사용하면 다양한 환경에서 애플리케이션을 쉽게 작업 할 수 있습니다. 예를 들어 개발 서버, 테스트 서버, 스테이징 서버 및 프로덕션 서버 환경에서. 이러한 모든 환경에서 다음을 사용할 수 있습니다.env() function 필요한 환경에 대한 구성을 읽고 애플리케이션을 빌드합니다.

config 폴더에서 config / .env.example을 보게 될 것입니다. 이 파일에는 환경에 따라 변경 될 모든 변수가 있습니다. 시작하려면 config / .env와 같은 config 폴더에 파일을 만들고 해당 변수를 정의하고 사용할 수 있습니다. 추가 변수가 필요한 경우 해당 파일에 넣을 수 있습니다.

아래와 같이 env () 함수를 사용하여 환경 변수를 읽을 수 있습니다.

$debug = env('APP_DEBUG', false);

첫 번째는 원하는 환경 변수의 이름이고 두 번째 값은 기본값입니다. 환경 변수에 대한 값이없는 경우 기본값이 사용됩니다.

일반 구성

다음 표는 다양한 변수의 역할과 이것이 CakePHP 응용 프로그램에 미치는 영향을 설명합니다.

Sr. 아니요 변수 이름 및 설명
1

debug

CakePHP 디버깅 출력을 변경합니다.

false= 생산 모드. 오류 메시지, 오류 또는 경고가 표시되지 않습니다.

true = 오류 및 경고가 표시됩니다.

2

App.namespace

앱 클래스를 찾을 네임 스페이스입니다.

App.baseUrl

CakePHP와 함께 Apache의 mod_rewrite를 사용하지 않으려면이 정의의 주석 처리를 제거하십시오. .htaccess 파일도 제거하는 것을 잊지 마십시오.

4

App.base

앱이 상주하는 기본 디렉토리입니다. false이면 자동으로 감지됩니다.

5

App.encoding

애플리케이션에서 사용하는 인코딩을 정의하십시오. 이 인코딩은 레이아웃에서 문자 집합을 생성하고 엔터티를 인코딩하는 데 사용됩니다. 데이터베이스에 지정된 인코딩 값과 일치해야합니다.

6

App.webroot

웹 루트 디렉토리.

7

App.wwwRoot

webroot에 대한 파일 경로입니다.

8

App.fullBaseUrl

애플리케이션 루트에 대한 정규화 된 도메인 이름 (프로토콜 포함)입니다.

9

App.imageBaseUrl

webroot 아래의 공용 이미지 디렉토리에 대한 웹 경로입니다.

10

App.cssBaseUrl

webroot 아래의 공용 css 디렉토리에 대한 웹 경로입니다.

11

App.jsBaseUrl

webroot 아래의 공용 js 디렉토리에 대한 웹 경로입니다.

12

App.paths

비 클래스 기반 리소스에 대한 경로를 구성합니다. 지원합니다plugins, templates, locales, subkeys, 플러그인,보기 템플릿 및 로케일 파일에 대한 경로를 각각 정의 할 수 있습니다.

13

Security.salt

해싱에 사용되는 임의의 문자열입니다. 이 값은 대칭 암호화를 수행 할 때 HMAC 솔트로도 사용됩니다.

14

Asset.timestamp

적절한 헬퍼를 사용할 때 자산 파일 URL (CSS, JavaScript, 이미지) 끝에 특정 파일의 마지막 수정 시간 인 타임 스탬프를 추가합니다. 유효한 값은-

  • (bool) false-아무 작업도하지 않습니다 (기본값).

  • (bool) true-디버그가 true 인 경우 타임 스탬프를 추가합니다.

  • (문자열) 'force'-항상 타임 스탬프를 추가합니다.

데이터베이스 구성

데이터베이스 구성 가능 config/app.php and config/app_local.php파일. 이 파일에는 제공된 매개 변수가있는 기본 연결이 포함되어 있으며 선택에 따라 수정할 수 있습니다.

아래 스 니펫은 요구 사항에 따라 수정해야하는 기본 매개 변수 및 값을 보여줍니다.

Config / app_local.php

*/
   'Datasources' => [
      'default' => [
         'host' => 'localhost',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'my_app',
         'url' => env('DATABASE_URL', null),
      ],
      /*
         * The test connection is used during the test suite.
      */
      'test' => [
         'host' => 'localhost',
         //'port' => 'non_standard_port_number',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'test_myapp',
         //'schema' => 'myapp',
      ],
   ],

각 매개 변수를 자세히 이해하겠습니다. config/app_local.php.

주최자

데이터베이스 서버의 호스트 이름 (또는 IP 주소).

사용자 이름

데이터베이스 사용자 이름

암호

데이터베이스 비밀번호.

데이터 베이스

데이터베이스 이름.

포트

서버에 연결하는 데 사용되는 TCP 포트 또는 Unix 소켓입니다.

config / app.php

'Datasources' => [
   'default' => [
      'className' => Connection::class,
      'driver' => Mysql::class,
      'persistent' => false,
      'timezone' => 'UTC',
      //'encoding' => 'utf8mb4',
      'flags' => [],
      'cacheMetadata' => true,
      'log' => false,
      'quoteIdentifiers' => false,
      //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
   ],
]

각 매개 변수를 자세히 이해하겠습니다. config/app.php.

로그
Sr. 아니요 키 및 설명
1

className

데이터베이스 서버에 대한 연결을 나타내는 클래스의 전체 네임 스페이스 클래스 이름입니다. 이 클래스는 데이터베이스 드라이버로드, SQL 트랜잭션 메커니즘 제공 및 SQL 문 준비를 담당합니다.

2

driver

데이터베이스 엔진의 모든 특성을 구현하는 데 사용되는 드라이버의 클래스 이름입니다. 플러그인 구문을 사용하는 짧은 클래스 이름, 전체 네임 스페이스 이름 또는 구성된 드라이버 인스턴스 일 수 있습니다. 짧은 클래스 이름의 예로는 Mysql, Sqlite, Postgres 및 Sqlserver가 있습니다.

persistent

데이터베이스에 대한 지속적 연결을 사용할지 여부입니다.

4

encoding

'utf8'등과 같은 SQL 문을 서버에 보낼 때 사용할 문자 집합을 나타냅니다.

5

timezone

설정할 서버 시간대입니다.

6

init

연결이 생성 될 때 데이터베이스 서버로 전송되어야하는 쿼리 목록입니다.

7

log

쿼리 로깅을 사용하려면 true로 설정하십시오. 활성화되면 쿼리는 쿼리 로그 범위를 사용하여 디버그 수준에서 기록됩니다.

8

quoteIdentifiers

테이블 또는 열 이름에 예약어 또는 특수 문자를 사용하는 경우 true로 설정하십시오. 이 설정을 활성화하면 SQL을 만들 때 식별자가 인용 된 쿼리 빌더를 사용하여 쿼리가 빌드됩니다. 성능이 저하됩니다.

9

flags

기본 PDO 인스턴스에 전달되어야하는 PDO 상수의 연관 배열입니다.

10

cacheMetadata

부울 true 또는 메타 데이터를 저장할 캐시 구성이 포함 된 문자열입니다. 메타 데이터 캐싱을 비활성화하는 것은 권장되지 않으며 성능이 매우 저하 될 수 있습니다.

이메일 구성

파일에서 이메일 구성 가능 config/app.php. config / app.php에서 이메일 구성을 정의 할 필요는 없습니다. 이메일 없이도 사용할 수 있습니다. 각 방법을 사용하여 모든 구성을 개별적으로 설정하거나 구성 배열을로드하십시오. 이메일 기본값에 대한 구성은 다음을 사용하여 생성됩니다.config()configTransport().

이메일 구성 전송

전송 프로필과 별도로 전송을 정의하면 여러 프로필에서 전송 구성을 쉽게 재사용 할 수 있습니다. 프로덕션, 개발 및 테스트를위한 여러 구성을 지정할 수 있습니다. 각 전송에는 className이 필요합니다. 유효한 옵션은 다음과 같습니다.

  • Mail − PHP 메일 기능을 사용하여 보내기

  • Smtp − SMTP를 사용하여 보내기

  • Debug − 이메일을 보내지 말고 결과 만 반환

적절한 파일을 다음에 추가하여 사용자 지정 전송을 추가하거나 기존 전송을 재정의 할 수 있습니다. src/Mailer/Transport. 전송 이름을 지정해야합니다.YourTransport.php, 어디 'Your' 전송의 이름입니다.

다음은 이메일 구성 전송의 예입니다.

'EmailTransport' => [
   'default' => [
      'className' => 'Mail',
      // The following keys are used in SMTP transports
      'host' => 'localhost',
      'port' => 25,
      'timeout' => 30,
      'username' => 'user',
      'password' => 'secret',
      'client' => null,
      'tls' => null,
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
   ],
],

이메일 전달 프로필

배달 프로필을 사용하면 응용 프로그램의 전자 메일 메시지에 대한 다양한 속성을 미리 정의하고 설정에 이름을 지정할 수 있습니다. 이를 통해 애플리케이션 전체의 중복을 줄이고 유지 관리 및 개발이 더 쉬워집니다. 각 프로필은 여러 키를 허용합니다.

다음은 이메일 전송 프로필의 예입니다.

'Email' => [
   'default' => [
   
      'transport' => 'default',
      'from' => 'you@localhost',
   ],
],