CakePHP-프로젝트 구성
이 장에서 우리는 Environment Variables, General Configuration, Database Configuration 과 Email 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, 이미지) 끝에 특정 파일의 마지막 수정 시간 인 타임 스탬프를 추가합니다. 유효한 값은-
|
데이터베이스 구성
데이터베이스 구성 가능 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',
],
],