Phalcon 是 C 扩展而非纯 PHP 库,必须手动安装 Zend 扩展并配置 php.ini;Composer 仅用于环境校验(ext-phalcon)、DevTools 和 IDE 补全,不能安装框架本身。

Phalcon 是 C 扩展实现的 PHP 框架,本身不通过 Composer 安装核心框架,但它的官方 phalcon/incubator(现为 phalcon/ide-stubs 和 phalcon/common)以及社区维护的 Composer 集成包(如 phalcon/devtools、phalcon/mvc 的封装)确实存在。不过,你真正需要的不是“安装 Phalcon via Composer”,而是:如何让 Composer 正确识别并加载已安装的 Phalcon 扩展,并配合使用其推荐的项目结构和工具。
Phalcon 扩展必须先手动安装,Composer 无法替代
Phalcon 不是纯 PHP 库,它是一个编译后的 Zend 扩展。Composer 只能管理 PHP 代码依赖,不能安装或启用扩展本身。
- Linux/macOS:需用
zephir build或从 GitHub releases 下载预编译的.so文件,再在php.ini中添加extension=phalcon.so - Windows:下载对应 PHP 版本和线程安全标识(TS/NTS)的
php_phalcon.dll,配置extension=php_phalcon.dll - 确认安装成功:
php -m | grep phalcon或php --ri phalcon应有输出
composer.json 中不需要 require "phalcon/phalcon"
早期(v3.x 之前)有非官方的 phalcon/phalcon 包,但它只是空壳或错误映射,现已废弃。当前所有稳定版本均**不发布到 Packagist**,强行 composer require phalcon/phalcon 会失败或引入不可用代码。
正确做法是:
- 在
composer.json中声明"ext-phalcon": "*"到require或require-dev,用于环境检查(Composer 会验证扩展是否已加载) - 若需 DevTools 支持,可
composer require phalcon/devtools --dev(注意:该包仅提供命令行工具,不包含框架运行时) - 若需 IDE 补全,可
composer require phalcon/ide-stubs --dev(生成 PHP stubs,供 PhpStorm/VSCode 识别类名)
使用 phalcon/devtools 创建项目时,composer install 是后续步骤
phalcon/devtools 提供的 phalcon project myapp 命令会生成标准 MVC 目录结构,并自带基础 composer.json —— 但它默认不写入任何运行时依赖,只含 autoload 配置和 ext-phalcon 约束。
{
"name": "myapp",
"require": {
"ext-phalcon": "*"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
执行 composer install 后,它只做两件事:
- 生成
vendor/autoload.php(供你的应用加载 PSR-4 类) - 校验
ext-phalcon是否可用;若未安装,报错The requested package ext-phalcon * is satisfiable by ext-phalcon[0.0.0] but these conflict with your requirements or minimum-stability.
常见错误:Class 'Phalcon\Di\FactoryDefault' not found
这不是 Composer 没装对,而是 PHP 进程根本没加载 Phalcon 扩展。即使 composer install 成功,也毫无意义。
排查顺序必须是:
- 运行
php -v确认 CLI 使用的 PHP 版本与你配置php.ini的版本一致(尤其 MAMP/XAMPP/WAMP 用户常混淆) - 运行
php --ini查看实际加载的php.ini路径,确认其中包含extension=...行且路径正确 - Web 服务器(Apache/Nginx)使用的 PHP 配置可能和 CLI 不同,需单独检查
phpinfo()页面中的Loaded Configuration File - 扩展名大小写敏感(Linux 下是
phalcon.so,不是Phalcon.so)
Phalcon 的集成关键永远在扩展层,Composer 只是配角——它管不了 dl()、zend_extension 或 extension_dir 这些事。










