PHP 8.2 完全兼容 openai-php/client,这是目前最主流、维护活跃的 OpenAI PHP SDK(由Spiral团队主导),安装需执行 composer require openai-php/client,初始化必须用环境变量传原始 apiKey(如sk-xxx,不带Bearer),调用时 messages 必须为关联数组而非 JSON 字符串。

PHP 8.2 完全兼容 openai-php/client,这是目前最主流、维护活跃的 OpenAI PHP SDK(由 Spiral 团队主导),不是官方出品但被广泛采用。接入过程清晰明确,关键在安装、初始化和调用三步,避开几个高频坑就能一次跑通。
安装:用 Composer 正确引入
运行以下命令安装(确保已安装 Composer 且 PHP 版本为 8.2):
composer require openai-php/client
注意三点:
- 别用
openai/openai或openai-php/openai—— 这些包已归档或停止维护,装了会报 Class not found; - 该包自动依赖
php-http/guzzle7-adapter和 PSR HTTP 客户端,无需手动装 Guzzle; - 装完检查
vendor/openai-php/client目录是否存在,存在即成功。
初始化:安全传入 API Key
必须通过环境变量加载密钥,不能硬编码:
.env 文件中写:OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PHP 中初始化 Client:
$client = \OpenAI\Client::builder()<br> ->withApiKey($_ENV['OPENAI_API_KEY']) // ← 只传 sk-xxx,不加 Bearer<br> ->build();
常见错误:
- 密钥带
Bearer前缀 → 返回 401,提示 “Incorrect API key provided”; - 没加载 .env(如未用 vlucas/phpdotenv)→
$_ENV为空 → 报错; - Docker 环境未将
OPENAI_API_KEY注入容器 → 请求失败。
调用:按规范传 messages 数组
Chat 接口要求 messages 是关联数组,每个元素含 role 和 content:
$response = $client->chat()->create([<br> 'model' => 'gpt-3.5-turbo',<br> 'messages' => [<br> ['role' => 'user', 'content' => '用 PHP 生成一个随机字符串'],<br> ],<br> 'temperature' => 0.7,<br> ]);<br> echo $response->choices[0]->message->content;
⚠️ 错误写法示例(会导致 TypeError):
$client->chat()->create('{"model":"gpt-3.5-turbo","messages":[...]}'); // ❌ 传 JSON 字符串
其他可用接口也直接调用:$client->embeddings()->create([...])$client->images()->generate([...])$client->audio()->transcribe([...])
网络与调试:国内环境实用建议
如果请求超时或连接失败(尤其在服务器上),优先排查:
- 确认服务器能访问
https://api.openai.com(可执行curl -I https://api.openai.com测试); - 开发环境临时绕过 SSL 验证(仅限调试):
$client = \OpenAI\Client::builder()<br> ->withApiKey(...)<br> ->withHttpClient(new \Http\Adapter\Guzzle7\Client(['verify' => false]))<br> ->build();
生产环境严禁此配置; - 考虑使用 TaoToken 等兼容层(Base URL 改为
https://taotoken.net/api),提升链路稳定性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











