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

Composer在依赖库生成异常文件夹,导致类无法自动加载怎么办?

问题排查:Composer引入Twilio SDK后类找不到的问题

编辑记录

  • 编辑2:已修改问题以反映根本问题。
  • 编辑1:异常文件夹似乎是问题根源。在新项目中测试其他包时,所有包(包括依赖项)都出现此问题。
    文件夹树截图

原始问题

通过Composer引入Twilio SDK,项目为老旧无框架项目,仅手动实现少量规范,使用自定义自动加载器,未配置composer.json的psr-4规则。

项目结构

- api.php
- composer.json
- composer.lock
- vendor
- app
  - models
  - libraries
  - controllers
  - tools
    - bootstrap.php

代码逻辑

  1. 入口文件api.php第一行引入bootstrap:
<?php
require_once("app/tools/bootstrap.php");
  1. bootstrap文件依次引入两个自动加载器(BASE_DIR变量及自定义自动加载器功能正常):
require_once(BASE_DIR . '/vendor/autoload.php');
require_once(BASE_DIR . '/app/tools/autoload.php');
  1. 自定义自动加载器app/tools/autoload.php内容:
<?php
spl_autoload_register(function ($className) {
    $autoload_folders = ["controllers", "models", "libraries"];
    $filename = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';

    foreach ($autoload_folders as $folder) {
        $path = BASE_DIR . "/app/$folder/$filename";

        if (is_file($path)) {
            require_once($path);
            break;
        }
    }
});

报错情况

引入自动加载器后调用$twilio = new \Twilio\Rest\Client($sid, $token);,触发报错:Uncaught Error: Class 'Twilio\Rest\Client' not found。已确认vendor/autoload.php被正确引入(在该文件中输出内容可在应用中正常显示)。

安装流程

composer require twilio/sdk
composer update
在bootstrap文件中添加require_once('/vendor/autoload.php')

已尝试的无效方法

  • 执行composer dump-autoload(含优化和不含优化参数,因是全新安装本不应需要此操作);
  • 将Composer自动加载器的引入移至api.php第一行,直接调用require_once('vendor/autoload.php');
  • 将Twilio实例化代码紧跟在自动加载器引入语句之后执行;

唯一可行但不愿采用的方法:直接引入Twilio自带的自动加载器vendor/twilio/sdk/<weird-twilio-folder-name>/src/autoload.php。

本人有多年Laravel及Composer使用经验,此功能之前正常工作,现突然失效,求排查思路。

参考composer.json

{
    "require": {
        "twilio/sdk": "^7.16"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:52:53