xampp 不支持 cassandra,二者端口无关:apache 多端口(如 8080/8081)仅用于托管不同 php 应用,cassandra 独立运行默认监听 9042/7199;php 连接需正确安装 cassandra 扩展及依赖 libsodium.dll,并确保 cassandra 服务已启动。

XAMPP 本身不直接“支持 Cassandra”,它只是本地 PHP 开发环境;Cassandra 是独立运行的分布式数据库服务。所谓“XAMPP 配置多端口支持 Cassandra”,实际是两件事并行:一是让 Apache(通过 XAMPP)监听多个端口以托管不同 PHP 应用(比如一个查 Cassandra,一个查 MySQL),二是确保 PHP 能通过 cassandra 扩展连接到本地或远程 Cassandra 实例。这两者端口不冲突,但容易混淆。
Apache 多端口配置和 Cassandra 无关,但必须先理清
很多人误以为“Cassandra 要走 Apache 端口”,其实不是。Cassandra 默认监听 9042(CQL 协议)和 7199(JMX),这些端口由 Cassandra 自己管理,和 XAMPP 的 80/8080 等完全无关。Apache 多端口只影响你用浏览器访问哪个 PHP 项目。
- 修改
C:\XAMPP\apache\conf\httpd.conf,在Listen 80后追加:Listen 8080Listen 8081 - 确认
Include conf/extra/httpd-vhosts.conf这行已取消注释 - 在
C:\XAMPP\apache\conf\extra\httpd-vhosts.conf中为每个端口配<virtualhost></virtualhost>块,DocumentRoot必须是绝对路径、结尾不带斜杠 - Windows
hosts文件需添加映射,例如:127.0.0.1 cassandra-app.local
否则浏览器根本解析不了自定义域名
PHP 连接 Cassandra 的关键在 extension 和依赖,不是端口
你在 phpinfo() 里看不到 cassandra 模块,或者报 Fatal error: Uncaught Error: Class 'Cassandra' not found,说明扩展没真正生效——这和 Apache 端口数量毫无关系,而是 Windows 下 DLL 加载失败的典型表现。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 下载的
php_cassandra.dll必须严格匹配你的 PHP 版本(如 8.2.x)、线程安全模式(TS/NTS)和架构(x64/x86);PECL 页面上每个版本都标有对应编译参数,别只看 PHP 主版本 -
php.ini中要同时加载依赖 DLL:extension=php_cassandra.dllextension=libsodium.dll(Cassandra 扩展强依赖 libsodium,XAMPP 自带的通常不带这个) - 把
libsodium.dll放进C:\XAMPP\php目录,并确保C:\XAMPP\php在系统PATH中(或复制到C:\Windows\System32) - 运行
php -m | findstr cassandra确认模块列出;若无,用php --ri cassandra查错误提示
Cassandra 服务本身必须独立启动且端口可用
即使 PHP 扩展装好了,new Cassandra\Cluster() 仍会连接失败,大概率是 Cassandra 没跑起来,或防火墙/端口被占。XAMPP 不负责启停 Cassandra。
- Windows 上建议用官方二进制包解压即用,不要用 XAMPP 自带服务管理;启动前检查
cassandra.yaml中:listen_address: 127.0.0.1rpc_address: 127.0.0.1start_rpc: true - 默认 CQL 端口是
9042,用命令验证是否就绪:telnet 127.0.0.1 9042(成功则有响应,失败说明 Cassandra 没启动或端口被占) - 如果 9042 被占用(比如 Docker 或其他 Java 进程),改
cassandra.yaml中的native_transport_port,然后重启 Cassandra - PHP 连接代码中端口必须显式指定,不能省略:
$cluster = Cassandra::cluster()->withContactPoints('127.0.0.1')->withPort(9042)->build();
最容易被忽略的是:Cassandra 扩展在 Windows 下对 DLL 依赖极其敏感,libsodium 缺失、位数不匹配、VC 运行库版本不对,都会导致 Class not found 却不报具体原因;而 Apache 多端口配置里,AllowOverride All 和 Require all granted 权限漏写一条,就会 403 却以为是 Cassandra 问题。两者要分开验证,别混在一起调。










