Phalcon 프로젝트 생성 및 실행하기
Phalcon이란?
Phalcon은 오픈 소스 고성능 PHP 웹 프레임워크로, C 확장(extension) 형태로 구현되어 있습니다. 이러한 독특한 구조 덕분에 Phalcon은 매우 낮은 리소스 소비와 뛰어난 실행 속도를 자랑하며, 대부분의 기존 PHP 프레임워크보다 탁월한 성능을 제공합니다. Phalcon은 MVC(모델-뷰-컨트롤러) 아키텍처 패턴을 따르며, ORM(객체-관계 매핑), 템플릿 엔진, 라우팅, 캐시, 이벤트 관리 등 다양한 고급 기능 컴포넌트를 제공합니다. 이를 통해 개발자는 강력하고 고성능의 웹 애플리케이션 및 API를 신속하게 구축할 수 있습니다.
Phalcon의 주요 특징 및 장점
- 최고의 성능: C 확장으로 동작하므로 PHP 스크립트 파싱과 로딩의 오버헤드를 줄여, 네이티브에 가까운 퍼포먼스를 제공합니다.
- 자원 효율성: 메모리 사용량이 매우 적어 대규모 트래픽이나 확장성 요구가 높은 프로젝트에 적합합니다.
- 풍부한 내장 기능: 웹 애플리케이션 개발에 필요한 대부분의 핵심 컴포넌트가 내장되어 있어, 외부 라이브러리 의존도를 낮출 수 있습니다.
- 쉬운 사용성: 일관되고 명확한 API와 자세한 공식 문서 덕분에, Phalcon 입문자도 쉽게 시작할 수 있습니다.
- 높은 모듈화: 각 기능 컴포넌트가 독립적으로 설계되어, 프로젝트 요구사항에 따라 자유롭게 선택/교체가 가능합니다.
- 강력한 보안: 입력 값 필터링, CSRF 보호 등 다양한 보안 관련 컴포넌트를 제공합니다.
따라서 Phalcon은 속도와 리소스 효율성이 중요한 고성능, 고확장성의 웹 애플리케이션 및 API 구축에 이상적인 프레임워크입니다.
ServBay를 통한 Phalcon 프로젝트 생성 및 실행
ServBay는 macOS를 위해 설계된 통합 웹 개발 환경으로, 여러 버전의 PHP와 데이터베이스(MySQL, PostgreSQL, MongoDB, Redis 등), 웹 서버(Caddy, Nginx, Apache) 그리고 다양한 개발 도구를 한 곳에 제공합니다. ServBay를 활용하면 Phalcon 프로젝트 구동에 필요한 환경을 쉽고 빠르게 구축하고 관리할 수 있습니다.
이 가이드에서는 ServBay의 PHP 환경을 활용해 기본 Phalcon 프로젝트를 생성하는 과정, 웹 서버를 연결해 프로젝트를 브라우저에서 접근 가능하게 만드는 방식, 그리고 관계형 데이터베이스(MySQL)와 NoSQL 데이터베이스(Redis) 통합 방법을 단계별로 안내합니다.
사전 준비 사항
시작하기 전에 다음 항목을 충족해야 합니다.
- ServBay 설치 및 실행: macOS에 ServBay를 성공적으로 설치하고 실행 중이어야 합니다.
- 필요한 PHP 버전 활성화: ServBay에서 사용할 PHP 버전이 활성화되어 있어야 합니다.
- Phalcon 모듈 활성화: ServBay에는 Phalcon 모듈이 포함되어 있지만, 기본적으로 비활성화일 수 있습니다. ServBay에 내장된 Phalcon 모듈 활성화 방법 안내에 따라, 프로젝트의 PHP 버전에 맞게 Phalcon 확장을 활성화하고 PHP 서비스를 재시작하세요.
- Composer 사용 가능: ServBay는 Composer를 내장하고 있으므로 별도 설치가 필요하지 않습니다. 터미널에서
composer
명령이 정상 동작하는지 확인하세요.
Phalcon 및 DevTools 버전 호환성
Phalcon 프레임워크와 개발 툴(Phalcon DevTools)은 사용 중인 PHP 버전에 따라 호환 버전이 다릅니다. 아래 표에서 일반적인 PHP 버전별로 권장하는 Phalcon 및 DevTools 버전을 확인하세요.
PHP 버전 | 권장 Phalcon 버전 | 권장 Phalcon DevTools 버전 | 주의사항 |
---|---|---|---|
PHP 5.6, 7.0, 7.1 | Phalcon 3.4.5 | 3.4.x | |
PHP 7.2, 7.3, 7.4 | Phalcon 4.1.2 | ~4.1 (또는 4.3.x ) | |
PHP 8.0, 8.1, 8.2 | Phalcon 5.x | 5.0.x (공식 지원) | 공식 DevTools의 경우 PHP 8.x에서 일부 호환성 문제가 발생할 수 있습니다. |
PHP 8.3, 8.4 | Phalcon 5.x | dev-master (커뮤니티 패치) | 커뮤니티 패치(fixed repo)를 활용하기를 권장 드립니다. |
중요: PHP 8.x 이상에서는 공식 Phalcon DevTools의 호환성이 떨어질 수 있으므로, 커뮤니티에서 제공하는 패치 버전을 사용하는 것이 좋습니다. 이하 프로젝트 생성 단계에서 Composer를 통한 패치버전 DevTools 설치 방법도 안내합니다.
Phalcon 프로젝트 생성하기
사이트 프로젝트 경로 안내
관리를 쉽게 하기 위해, ServBay는 모든 웹 프로젝트를 기본 웹 루트 /Applications/ServBay/www
폴더 아래에 저장할 것을 권장합니다. 본 예시 역시 이 디렉토리에서 프로젝트를 생성합니다.
웹 루트 디렉토리 이동 및 프로젝트 폴더 생성
터미널을 열고 ServBay의 웹 루트 디렉토리로 이동한 뒤, Phalcon 프로젝트용 새 폴더(예:
servbay-phalcon-app
)를 만듭니다.bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Phalcon DevTools 설치
Phalcon DevTools는 코드 생성, 프로젝트 스캐폴딩, 데이터베이스 마이그레이션 관리 등 개발편의를 높여주는 커맨드라인 도구입니다. Composer로 설치하며, PHP 버전에 따라 설치 방법이 조금 다릅니다.
PHP 5.6, 7.0, 7.1 (Phalcon DevTools
^3.4
)인 경우:bashcomposer require phalcon/devtools:"^3.4"
1PHP 7.2, 7.3, 7.4 (Phalcon DevTools
~4.1
)인 경우:bashcomposer require phalcon/devtools:"~4.1"
1PHP 8.0, 8.1, 8.2, 8.3, 8.4 (
dev-master
패치 버전 DevTools): 공식 DevTools가 PHP 8.x에서는 일부 문제를 일으킬 수 있으니, 커뮤니티에서 유지보수하는 패치 저장소를 Composer 설정에 추가해 설치하세요. 먼저, 프로젝트 루트(/Applications/ServBay/www/servbay-phalcon-app
)에composer.json
을 아래와 같이 설정합니다.json{ "repositories": [ { "url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git", "type": "git" } ], "require": { "phalcon/devtools": "dev-master" }, "minimum-stability": "dev", "prefer-stable": true }
1
2
3
4
5
6
7
8
9
10
11
12
13그리고 Composer로 DevTools를 설치합니다.
bashcomposer update
1
Composer는 프로젝트 루트(
servbay-phalcon-app
)에vendor
폴더를 생성하며, DevTools 실행파일은vendor/bin/phalcon
에 위치합니다.Phalcon DevTools로 프로젝트 구조 생성
이제 방금 설치한 DevTools 명령을 사용해 Phalcon 프로젝트의 기본 디렉토리 구조를 만듭니다. 실제 프로젝트 코드는 하위 폴더(예:
servbay-phalcon-app
)에 생성되며, 이는 DevTools의 기본 동작입니다.bashvendor/bin/phalcon project servbay-phalcon-app
1이 명령은
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
경로에 새로운 Phalcon 앱 구조를 만들어줍니다.프로젝트 코드 디렉토리로 이동
하위에 생성된 실제 프로젝트 디렉토리로 이동한 뒤, 이후 모든 작업은 이곳에서 진행합니다.
bashcd servbay-phalcon-app
1즉, 현재 위치는
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
이어야 합니다.
프로젝트 환경 설정
Phalcon 프로젝트의 주요 설정은 보통 app/config/config.php
에 있습니다. 데이터베이스 연결 정보와 애플리케이션 경로 등 중요한 정보들을 이 파일에서 지정하게 됩니다.
설정 파일 수정
선호하는 코드 에디터로
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/config.php
를 열고, 데이터베이스 관련 설정을 확인하거나 추가하세요. ServBay의 MySQL/MariaDB 기본 계정은root
이고, 기본 비밀번호는 비어 있습니다(그러나 보안상 강력한 비밀번호로 변경하는 것이 좋음). 본 문서에서는 예시값으로password
를 사용합니다. 데이터베이스명(servbay_phalcon_app
)도 예제이므로, 필요에 따라 직접 데이터베이스를 생성해야 합니다.phpreturn new \Phalcon\Config([ // ... 기타 설정 ... 'database' => [ 'adapter' => 'Mysql', // 또는 'Postgres' 등 'host' => '127.0.0.1', 'username' => 'root', // ServBay 기본 계정 'password' => 'password', // <-- 실제 비밀번호로 수정 'dbname' => 'servbay_phalcon_app', // <-- 실제 데이터베이스명으로 수정 ], // ... 기타 설정 ... ]);
1
2
3
4
5
6
7
8
9
10
11중요: ServBay에서 해당 데이터베이스 서비스(MySQL, MariaDB 등)가 실행 중이어야 하며, 계정 정보가 설정과 일치해야 합니다. 또한,
servbay_phalcon_app
데이터베이스는 직접 생성해야 합니다. ServBay의 phpMyAdmin, Adminer 등 관리툴로 데이터베이스/계정 생성을 쉽게 할 수 있습니다.
웹 서버 설정(ServBay 사이트 기능 활용)
브라우저로 Phalcon 프로젝트에 접근하려면, ServBay의 사이트 기능에서 가상 호스트와 웹 경로(도메인)를 설정해야 합니다.
- ServBay 앱 실행
- '사이트' 메뉴 진입: ServBay 메인 화면에서 '사이트' 메뉴를 찾고 클릭하세요.
- 신규 사이트 추가: 새 사이트를 추가합니다.
- 이름: 예시로 'My First Phalcon Dev Site' 등 식별하기 쉬운 이름을 입력합니다.
- 도메인:
servbay-phalcon-test.local
등 브라우저에서 접근할 도메인 입력(ServBay가.local
은 자동으로 로컬로 연결). - 사이트 유형:
PHP
를 선택합니다. - PHP 버전: Phalcon 모듈이 활성화된 PHP 버전을 선택합니다.
- 사이트 루트 디렉토리: 중요! Phalcon의 진입점
index.php
파일은 보통public
폴더에 있으므로, 실제 웹 루트로/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
을 지정하세요.
- 설정 저장: 설정을 저장하고 필요 시 웹서버(Caddy/Nginx) 재시작(자동 처리될 수 있음).
사이트 설정 자세한 예시는 첫 번째 웹사이트 추가하기를 참고하세요. 완료 후에는 ServBay가 자동으로 로컬 DNS와 웹서버 설정을 처리해 줍니다.
예제 코드 추가
프로젝트가 정상 동작하는지 간단히 테스트해 봅니다.
라우터 설정
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/routes.php
파일에서, 루트(/
) 경로를 처리하는 간단한 라우팅 규칙을 추가합니다.php<?php use Phalcon\Mvc\Router; $router = new Router(false); // 기본 라우팅: 루트('/')를 IndexController의 indexAction에 매핑 $router->add( '/', [ 'controller' => 'index', 'action' => 'index', ] ); // ... 추가 라우팅 규칙 예시 ... $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19컨트롤러 작성
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/controllers/IndexController.php
파일이 없다면 생성하고, 아주 간단한indexAction
메서드를 구현합니다.php<?php namespace App\Controllers; // 네임스페이스를 꼭 확인 use Phalcon\Mvc\Controller; class IndexController extends Controller { // 루트 경로('/') 요청 처리 public function indexAction() { // 간단한 문자열 응답 return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
사이트 접속 및 결과 확인
모든 파일을 저장한 뒤, ServBay가 정상 작동 중인지 확인합니다. 웹 브라우저에서 사이트에 접속하세요.
https://servbay-phalcon-test.local
모든 설정이 올바르다면 "Hello ServBay!"라는 문구가 브라우저에 출력됩니다.
데이터베이스 통합
Phalcon은 강력한 DB 추상화 계층(ORM 포함)을 제공하며, ServBay에 내장된 여러 데이터베이스와 쉽게 연동할 수 있습니다. 여기서는 MySQL과 Redis 연동을 예로 설명합니다.
관계형 데이터베이스 예시: MySQL
Phalcon의 데이터베이스 어댑터로 ServBay의 MySQL 서비스에 연결하고, 간단한 삽입/조회 동작을 해봅니다.
DB 구조 생성 (마이그레이션 활용)
Phalcon DevTools는 DB 마이그레이션을 지원하여, 스키마 버전 관리를 할 수 있습니다.
마이그레이션 파일 생성: 프로젝트 코드 디렉토리(
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
)에서 커맨드 실행bashvendor/bin/phalcon migration generate
1그러면
migrations
폴더에YYYYMMDDHHMMSS_MigrationName.php
형식의 새 마이그레이션 파일이 생깁니다.마이그레이션 파일 수정: 파일을 열어, 아래처럼 간단한
users
테이블 구조를 정의합니다.php<?php use Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; /** * Class UsersMigration_100 */ class UsersMigration_100 extends Migration // 클래스명과 파일명을 일치시킬 것 { /** * 마이그레이션 수행 * * @return void */ public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], 'options' => [ 'TABLE_ENGINE' => 'InnoDB', 'CHARACTER SET' => 'utf8mb4', 'COLLATE' => 'utf8mb4_unicode_ci', ], ]); } /** * 마이그레이션 롤백 * * @return void */ public function down() { // 선택 사항: 역마이그레이션 구현(테이블 삭제 등) // $this->getConnection()->dropTable('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70참고: 클래스명과 파일명을 반드시 맞추세요.
마이그레이션 적용: 커맨드로 마이그레이션을 실행해 DB에 users 테이블을 만듭니다.
bashvendor/bin/phalcon migration run
1만약 연결 오류가 발생하면,
app/config/config.php
의 DB 설정 및 ServBay의 MySQL/MariaDB 서비스 실행 상태를 다시 점검하세요.
DB 연결 설정(앞서 이미 완료)
app/config/config.php
의database
설정이 ServBay에서 동작 중인 MySQL(MariaDB) 서비스(기본 호스트: localhost, 포트: 3306, 계정: root, 비밀번호: 설정에 따라 상이)를 올바르게 가리키도록 확인합니다.예제 라우트 추가
app/config/routes.php
에 유저 데이터 삽입/조회용 라우트를 추가합니다.php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); // 유저 데이터 삽입 라우터 $router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); // 유저 데이터 조회 라우터 $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31컨트롤러에서 DB 연동 구현
app/controllers/IndexController.php
에서mysqlAddAction
과mysqlAction
메서드를 추가합니다.php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; // MySQL 어댑터 use Phalcon\Db\Enum; // fetchAll 모드 사용 class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } // 유저 추가 예제 public function mysqlAddAction() { // 서비스에 등록된 DB 인스턴스를 받아오거나 직접 생성 $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- 실제 비밀번호로 변경 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); // 예제 데이터 삽입 $success = $connection->insert( 'users', // 테이블명 ['ServBay Demo User', '[email protected]'], // 값 배열 ['name', 'email'] // 컬럼명 배열 ); // 결과 출력 echo $success ? 'User added successfully.' : 'Failed to add user.'; } // 유저 목록 조회 예제 public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- 실제 비밀번호로 변경 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); // 모든 유저 검색 $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); // JSON으로 결과 반환 header('Content-Type: application/json'); echo json_encode($users); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56참고: 실제 서비스라면 DB 연결 인스턴스를 서비스 컨테이너에 등록 후 DI로 받아 사용하는 것이 좋습니다.
예제 경로로 접속해 테스트
- 웹 브라우저에서
https://servbay-phalcon-test.local/mysql-add
에 접속하면 "User added successfully."가 출력됨 - 이어서
https://servbay-phalcon-test.local/mysql
에 접속하면, JSON 포맷으로 유저 목록(방금 추가한 계정 포함)이 출력됨
- 웹 브라우저에서
NoSQL 데이터베이스 예시: Redis
ServBay 제공 Redis 서비스를 Phalcon에서 캐싱 용도로 연동해봅니다.
Redis 확장 설치 확인
ServBay 패키지에는 대부분 Redis 확장이 내장되어 있습니다. 단, 현재 프로젝트의 PHP 버전에서 해당 확장(php-redis)이 활성화되어 있는지만 ServBay 환경설정에서 체크하세요.
Redis 연결 설정
app/config/config.php
에 Redis 연결 정보를 추가합니다. ServBay 기본 환경에서는 127.0.0.1:6379 포트를 사용합니다.phpreturn new \Phalcon\Config([ // ... 기타 설정 ... 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, // redis DB 인덱스(기본값 0) 'persistent' => false, 'auth' => null, // 패스워드 필요 시 입력 ], // ... 기타 설정 ... ]);
1
2
3
4
5
6
7
8
9
10
11
12예제 라우트 추가
app/config/routes.php
에 Redis 캐시 사용 예제를 위한 라우트를 추가합니다.php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); $router->add('/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ]); $router->add('/mysql', [ 'controller' => 'index', 'action' => 'mysql', ]); // Redis 캐시 예제 라우트 추가 $router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32컨트롤러에서 Redis 캐시 사용
app/controllers/IndexController.php
에redisAction
구현 예제를 추가합니다.php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; use Phalcon\Db\Enum; use Phalcon\Cache\Adapter\Redis; // Redis 어댑터 use Phalcon\Storage\SerializerFactory; // 직렬화 팩토리 class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } public function mysqlAddAction() { $connection = new Mysql([/* ... */]); $success = $connection->insert(/* ... */); echo $success ? 'User added successfully.' : 'Failed to add user.'; } public function mysqlAction() { $connection = new Mysql([/* ... */]); $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); header('Content-Type: application/json'); echo json_encode($users); } // Redis 캐시 예제 public function redisAction() { // 직렬화 팩토리 생성 $serializerFactory = new SerializerFactory(); // Redis 캐시 옵션 구성(설정 파일과 동일하게) $options = [ 'defaultSerializer' => 'Json', 'lifetime' => 3600, // 1시간 캐시 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, // 'auth' => 'your_redis_password', // 비밀번호 필요 시 ]; // Redis 캐시 인스턴스 생성 $cache = new Redis($serializerFactory, $options); $cacheKey = 'my_servbay_redis_cache_key'; $cachedData = $cache->get($cacheKey); // 캐시에서 데이터 조회 if ($cachedData === null) { // 캐시에 데이터 없음 echo "Data not found in cache, fetching from source..."; $cachedData = 'Data fetched from source: Hello Redis from ServBay!'; $cache->set($cacheKey, $cachedData); // 캐시에 저장 echo "Data stored in cache."; } else { // 이미 캐시에 데이터 있음 echo "Data found in cache: "; } // 캐시 데이터(또는 새로 쓴 데이터) 반환 return $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68참고: 실제 서비스에서는 캐시 인스턴스를 DI로 주입하거나 서비스로 등록해 사용하는 것이 효율적입니다.
예제 접속 및 동작 확인
브라우저에서
https://servbay-phalcon-test.local/redis
에 접속하면,- 첫 방문 시 "Data not found in cache, fetching from source...Data stored in cache."와 "Data fetched from source: Hello Redis from ServBay!" 메시지가 출력됩니다.
- 동일 세션에서 재접속하면 "Data found in cache:"와 "Data fetched from source: Hello Redis from ServBay!"가 출력되어, Redis 캐시에서 결과를 불러온 것을 알 수 있습니다.
자주 묻는 질문 (FAQ)
- Q: 사이트에 접속하면 404 Not Found 에러가 발생합니다.
- A: ServBay 사이트 설정에서 "사이트 루트 디렉토리"가 Phalcon 프로젝트의
public
폴더(/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
)로 정확히 지정되어야 합니다. 또한 ServBay의 웹 서버(Caddy/Nginx)가 정상 실행되고 있는지, 도메인 로컬 연결에 문제가 없는지도 확인하세요.
- A: ServBay 사이트 설정에서 "사이트 루트 디렉토리"가 Phalcon 프로젝트의
- Q: Phalcon 모듈이 없다는 오류(Class 'Phalcon\Mvc\Application' not found 등)가 출력됩니다.
- A: 사용 중인 PHP 버전에 Phalcon 확장이 활성화되어 있지 않을 때 발생합니다. ServBay 앱에서 해당 PHP 버전의 Phalcon 확장 모듈을 체크 후, PHP 서비스를 재시작하세요. 자세한 가이드는 ServBay Phalcon 모듈 활성화 방법 참고.
- Q: 데이터베이스 연결이 실패합니다.
- A:
app/config/config.php
의 DB 설정(호스트, 계정, 비밀번호, DB명)이 실제 ServBay 환경과 일치하는지 확인하세요. ServBay의 데이터베이스 서비스가 정상 실행 중이고, DB 계정에 접속 및 사용 권한이 있는지도 반드시 점검합니다. 지정한 데이터베이스가 실제로 존재하는지도 확인해야 합니다.
- A:
마무리
ServBay를 활용하면 Phalcon 프레임워크 기반 고성능 로컬 개발 환경을 손쉽게 구축할 수 있습니다. 본 가이드에서는 프로젝트 생성, 웹 서버 연결, MySQL/Redis 데이터베이스 통합 등 전체 흐름을 체계적으로 다루었습니다. ServBay가 제공하는 다양한 패키지와 직관적인 관리 UI를 통해 복잡한 환경 세팅과 유지 보수에 소모되는 시간을 줄이고, Phalcon 애플리케이션 개발에 집중할 수 있습니다. 본 안내서가 여러분의 ServBay, Phalcon 기반 웹 개발에 실질적인 도움이 되길 바랍니다!