You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku运行Lumen-PHP项目artisan命令报错:Class 'Memcached'未找到

解决Heroku上Lumen-PHP项目运行Artisan命令时“Class 'Memcached' not found”的问题

我之前在Heroku部署Lumen项目时也碰到过一模一样的问题,光在composer.json里加ext-memcached依赖确实不够——Heroku的PHP环境默认不会自动安装Memcached扩展的系统依赖,得额外配置几步:

步骤1:确认Composer依赖的正确声明

首先确保你的composer.json里require区块的ext-memcached声明正确,适配你的PHP版本:

"require": {
    "php": "^8.0",
    "laravel/lumen-framework": "^9.0",
    "ext-memcached": "*"
}

运行composer update更新依赖,然后把修改后的composer.json和composer.lock提交到Git,重新部署到Heroku:

git add composer.json composer.lock
git commit -m "Add memcached extension dependency"
git push heroku main

步骤2:安装Memcached的系统依赖

Memcached PHP扩展依赖libmemcached系统库,Heroku默认不会预装这个。你需要添加Heroku的APT buildpack来安装系统包:

  1. 先添加APT buildpack到你的Heroku项目(要放在PHP buildpack之前):
heroku buildpacks:add --index 1 heroku-community/apt
  1. 在项目根目录创建一个名为Aptfile的文件,内容只需要一行:
libmemcached-dev
  1. 提交这个文件并重新部署:
git add Aptfile
git commit -m "Add libmemcached system dependency"
git push heroku main

步骤3:验证扩展是否安装成功

部署完成后,登录Heroku的控制台检查Memcached扩展是否生效:

heroku run bash
# 进入控制台后运行
php -m | grep memcached

如果输出memcached,说明扩展已经安装成功,此时再运行Artisan命令应该就不会报错了。

备选方案:临时切换缓存驱动(如果不需要Memcached)

如果你暂时不需要用Memcached作为缓存驱动,可以临时修改Lumen的缓存配置来绕过这个问题:

  1. 打开bootstrap/app.php,找到缓存配置的部分,把默认驱动改成file或者array:
$app->configure('cache');
// 或者直接设置驱动
$app->instance('config', $app->make('config')->set('cache.default', 'file'));
  1. 提交修改后重新部署,这样Artisan命令就会使用文件缓存,不会再寻找Memcached类了。

内容的提问来源于stack exchange,提问作者Olaoluwa Faniyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:18:06