Laravel 使用 memcached 缓存时, Composer 报 Class ‘memcached’ Not Found 错误 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
freadman
V2EX    PHP

Laravel 使用 memcached 缓存时, Composer 报 Class ‘memcached’ Not Found 错误

  •  
  •   freadman 2022-05-02 18:30:02 +08:00 2535 次点击
    这是一个创建于 1271 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 运行环境

    Mac MAMP PRO 6.6.1 Nginx:1.19.2 Mysql:5.7.34 Memcached:1.4.32 PHP:8.1.1

    3). 当前系统

    1. 问题描述? 1 、在 PHP 文件中直接测试 memcached 缓存,是可以读取的,代码如下:

    $memcached->addServer('127.0.0.1', 11211);

    $version = $memcached->getVersion(); echo '

    '; print_r($version); echo '
    ';

    $memcached->set('Key1', 'MAMP PRO'); $result = $memcached->get('Key1'); echo $result; 2. 在命令行执行 php artisan queue:work 正常(之前不行,后面修改环境变量后可以了) 3. 命令行执行 composer dump-autoload 报错

    Error

    Class "Memcached" not found

    at vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php:69 65| * @return \Memcached 66| */ 67| protected function createMemcachedInstance($connectionId) 68| {

    69| return empty($connectionId) ? new Memcached : new Memcached($connectionId); 70| } 71| 72| /** 73| * Set the SASL credentials on the Memcached connection.

     +9 vendor frames 

    10 [internal]:0 Spatie\Permission\PermissionRegistrar::__construct(Object(Illuminate\Cache\CacheManager))

     +14 vendor frames 

    25 [internal]:0 Illuminate\Foundation\Application::Illuminate\Foundation{closure}(Object(Spatie\Permission\PermissionServiceProvider))

    10 条回复    2022-05-23 15:29:36 +08:00
    concernedz
        1
    concernedz  
       2022-05-02 18:52:57 +08:00 via Android
    配置没弄对?
    wonderfulcxm
        2
    wonderfulcxm  
       2022-05-02 18:56:03 +08:00 via iPhone
    没开启扩展吧
    wonderfulcxm
        3
    wonderfulcxm  
       2022-05-02 18:58:41 +08:00 via iPhone
    phpinfo 看看有没有 memcache ,可能加载了不同的 php.ini
    documentzhangx66
        4
    documentzhangx66  
       2022-05-02 21:17:17 +08:00
    看看是不是这个问题:

    https://stackoverflow.com/questions/34196482/class-memcached-not-found-in-laravel

    如果不行,就先使用对比法:

    1.先找个能跑得起来的 Demo 环境。

    2.对比你自己搭建的环境,出现 not found , 你就跟踪相关进程的每个 IO 操作,用名字作为关键词过滤,肯定会找到一个 not found 的 file io event 。比如,如果是 PHP 进程 在访问 /usr/bin/xxx.mod 时出现 File Not Found ,那么要不就是相关组件你没安装好,要不就是缺失 xxx.mod 组件或文件。

    接着再去谷歌找对应的解决方案就行。一般是重装整个系统与环境。或单独安装缺失的模组,或去模组源码版本里寻找这个文件,或者在已经能跑起来的 Demo 环境里找对应的文件,或者对比已经跑起来的 Demo 环境里的 PHP 进程,看看它在访问在访问 /usr/bin/xxx.mod 时,为啥没出现 File Not Found ,等等。
    documentzhangx66
        5
    documentzhangx66  
       2022-05-02 21:19:10 +08:00
    看了一下,你好像用的是 Windows ,Windows 有一款叫 Procmon.exe 的程序,可以实现我在上一条评论里说的那种跟踪操作。
        6
    freefcw  
       2022-05-02 21:48:43 +08:00
    我估计你直接运行 php 文件的 php,和 mamp 里面的 php 应该不是一个版本,mac 自带了一个 php 版本,mamp 和 mac 自带的不是一个,所以你检查一下看看
    freefcw
        7
    freefcw  
       2022-05-04 12:54:54 +08:00
    另外还有一个简单的办法,在 index.php 里面,直接调用 phpinfo();看是否启用了 memcached
    freadman
        8
    freadman  
    OP
       2022-05-05 09:17:17 +08:00
    @documentzhangx66 MAC

    @freefcw 找到问题了,是 MAMP 里面 PHP8.1.1 版本的 memcached 有问题,现在我切换至 8.0.8 版本 OK 了。
    不过出现了一个新问题,那就是我在 MAC 的终端里面是 OK 的,但是在 VScode 里面集成的终端还不行,奇了怪了,这两个终端还调用不同 PHP ?
    encro
        9
    encro  
       2022-05-09 14:46:05 +08:00
    送分题:

    一个是 console 模式,

    一个是 fpm 模式,

    加载了不同的配置。
    freadman
        10
    freadman  
    OP
       2022-05-23 15:29:36 +08:00
    @encro 确实是这个问题,但环境配置不熟,用了 MAMP PRO 来搭建环境,然后 memcached 其实是自带的,折腾来折腾去自己用重新用 brew 安装了 php 8 ,fpm 模式加载的就是这个 PHP ,所以 fpm 模式下是没有装 memcached 的,把这个环境卸载掉,然后配置下全局环境变量,指定系统 PHP 版本到 mamp pro 里面对应的 PHP 就可以了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1391 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 16:52 PVG 00:52 LAX 09:52 JFK 12:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86