solr 9.x 无法在 phpenv 中开箱即用,因其强制要求 java 11+,而 phpenv 默认仅提供 openjdk 8;需手动安装 jdk 11、配置 java_home、改用 solr.cmd 启动,并通过 http 客户端(非 solr.so 扩展)对接 rest api。

Solr 9.x 无法直接在 phpEnv 中开箱即用,核心原因是 phpEnv 默认不提供 JDK 11+ 环境,而 Solr 9 强制要求 Java 11 或更高版本。 即使你手动装了 Solr 二进制包,solr start 也会因 java -version 不满足最低要求而静默失败或报错“Unsupported Java version”。
phpEnv 里没有 JDK 11?先确认并补上
phpEnv 自带的 Java 是 OpenJDK 8(用于运行其内部服务),java -version 输出通常为 1.8.0_*。Solr 9 完全不兼容这个版本。
- 不要尝试用 phpEnv 的「软件管理」安装 JDK —— 它不提供 JDK 11 选项
- 必须手动下载 OpenJDK 11(推荐 Eclipse Temurin 11 或官方 OpenJDK 11 构建)
- 解压到固定路径,例如
C:\phpenv\jdk-11.0.22(注意路径不含空格和中文) - 在系统环境变量中新增
JAVA_HOME指向该目录,并把%JAVA_HOME%\bin加入PATH - 重启命令行,执行
java -version验证输出含11.字样
solr.bat 启动失败?改用 solr.cmd 并显式指定 Java
phpEnv 是 Windows 环境,Solr 9 的 bin\solr.bat 脚本在检测 Java 版本时逻辑较旧,容易误判;而 solr.cmd 更稳定,且支持强制指定 JVM。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 进入 Solr 解压目录的
bin子目录(如C:\solr\bin) - 用文本编辑器打开
solr.cmd,找到set JAVA=行,在其下方添加:
set JAVA_HOME=C:\phpenv\jdk-11.0.22 set JAVA=%JAVA_HOME%\bin\java.exe
- 保存后,在同一目录下运行:
solr.cmd start -p 8983 -d C:\solr\server - 如果提示端口被占用(常见于 phpEnv 的 Apache 占用 80/443,但 8983 一般空闲),可换端口如
-p 8984
PHP 扩展 solr.so 和 Solr 9 不兼容?别装它
PHP 的 solr PECL 扩展(solr.so)最新稳定版(截至 2026 年 4 月)仅支持到 Solr 8.x,与 Solr 9 的 API、认证机制、响应格式存在不兼容。强行启用会导致 new SolrClient() 报错或查询返回空结果。
- 不要运行
pecl install solr—— 它会装一个过期扩展 - PHP 侧应改用 HTTP 客户端(如
curl或GuzzleHttp\Client)直连 Solr REST API - 例如查询:
http://localhost:8983/solr/mycore/select?q=title:测试,用json_decode(file_get_contents($url))解析即可 - 索引写入也走 POST JSON 到
/solr/mycore/update/json/docs,无需扩展
防火墙和路径权限:Windows 下最容易卡住的两个点
即使 Solr 进程起来了,http://localhost:8983 打不开,大概率是这两个原因。
- Windows Defender 防火墙默认阻止 Java 进程对外监听 —— 进入「高级安全 Windows 防火墙」→「入站规则」→ 新建规则 → 选择「程序」→ 指向
java.exe(即C:\phpenv\jdk-11.0.22\bin\java.exe)→ 允许连接 - phpEnv 默认以当前用户身份运行服务,但 Solr 写日志、建索引时需对
server\solr目录有完全控制权 —— 右键该文件夹 →「属性」→「安全」→ 编辑当前用户权限 → 勾选「完全控制」 - 不要把 Solr 放在
C:\Program Files或 phpEnv 安装目录内 —— UAC 会拦截写操作
真正麻烦的不是启动 Solr,而是让 PHP 和 Solr 9 在同一台 Windows 机器上互不干扰地跑通:Java 版本锁死、启动脚本绕过检测、PHP 放弃旧扩展改走 HTTP、Windows 权限和防火墙逐个放行 —— 少一步,503 Service Unavailable 或空白页面就等着你。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










