PHP无法直接运行Llama 3模型,只能作为客户端调用Ollama提供的HTTP接口(如/api/chat),需严格使用POST+JSON格式、禁用SSL验证、精确匹配模型名,并确保Ollama服务已启动且模型已下载。

PHP 本身不运行大模型,也不能直接加载 llama3 模型文件。所谓“PHP 部署 Llama 3”,本质是让 PHP 作为客户端,调用本地已运行的模型服务(比如 Ollama 提供的 HTTP 接口)。只要这层通信通了,你就能在 PHP 里实现离线问答——但模型不在 PHP 进程里,而在 ollama 后台进程里。
PHP 调用 Ollama 的 /api/chat 接口必须用 POST + JSON body
Ollama 的 API 设计很明确:所有对话请求必须走 /api/chat,且只接受 POST 方法和严格格式的 JSON。常见错误是误用 /api/generate(那是流式纯文本接口,不支持多轮上下文),或用 GET 拼 query string(会 405 或 400)。
- 请求头必须带
Content-Type: application/json - Body 必须是完整 JSON 对象,至少包含
model和messages字段 -
messages是数组,每项含role("user"或"assistant")和content(字符串) - 示例最小合法请求:
{"model":"llama3","messages":[{"role":"user","content":"你好"}]}
PHP 中用 curl 发起请求时要禁用 SSL 验证(仅限本地)
Ollama 默认启动的 http://localhost:11434 是 HTTP(非 HTTPS),但某些 PHP 环境(尤其 macOS 或 WAMP)的 curl 会因 CA 证书问题拒绝连接,表现为 SSL certificate problem 错误,即使 URL 明明是 http。
- 必须显式设置
CURLOPT_SSL_VERIFYPEER => false和CURLOPT_SSL_VERIFYHOST => false - 同时建议设
CURLOPT_RETURNTRANSFER => true,否则curl_exec()返回true而不是响应体 - 不要省略
CURLOPT_POST => true,否则curl默认用 GET
llama3 模型名必须精确匹配,区分大小写和点号
Ollama里模型名是注册标识,不是文件名。常见混淆点:
-
llama3(默认 8B)和llama3.2(2026 年主流版本)是两个不同模型,不能混用 -
llama3:8b、llama3:70b是带标签的变体,必须完整写对,llama3:8b≠llama3 - 如果执行过
ollama run llama3.2,那实际拉取的是llama3.2,调用时 model 字段就得填"llama3.2" - 检查已安装模型:终端运行
ollama list,看输出第一列的 exact name
超时与流式响应需主动控制
/api/chat 默认返回完整 JSON 响应(非 chunked),但若提示词复杂或硬件慢,可能卡住。PHP 默认 curl 超时是 0(无限),线上环境必须设限:
- 建议设
CURLOPT_TIMEOUT => 60(单位秒),避免阻塞整个请求 - 不要开启
CURLOPT_HTTPHEADER里的Accept: text/event-stream——那是给 SSE 流式用的,PHP 同步调用处理起来麻烦,且llama3在消费级硬件上基本秒回,没必要流 - 响应体是 JSON,记得用
json_decode($response, true)解析,message.content字段才是答案文本
真正容易被忽略的不是代码怎么写,而是:你得先确保 ollama serve 在后台持续运行,且 llama3(或 llama3.2)已通过 ollama pull 下载完成。PHP 只负责发请求,它不会帮你启动服务、下载模型、或处理 CUDA 驱动缺失——这些全在 PHP 外部。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











