Composer安装成功但Class not found,主因是未引入vendor/autoload.php或路径错误;PHP扩展缺失(如gd、xml)和内存溢出也是运行时报错常见原因。

直接用 composer require phpoffice/phpspreadsheet 就能装上,但实际项目里常卡在 autoload、PHP 版本、扩展缺失或内存溢出这几步——不是命令没跑通,而是装完调用时报错。
为什么 composer require phpoffice/phpspreadsheet 后仍报 Class not found?
常见于未启用 Composer 自动加载,或项目根目录下没有 vendor/autoload.php。
- 确认你是在项目根目录(含
composer.json)执行的命令,不是系统任意路径 - PHP 脚本开头必须显式引入:
require 'vendor/autoload.php';,漏掉这行必报错 - 如果用的是子目录部署(比如 Apache DocumentRoot 指向
public/),要确保该目录能正确相对引用到../vendor/autoload.php
PHP 8.1+ 安装失败或报 ext-gd / ext-xml missing?
phpspreadsheet 不是纯 PHP 库,它依赖系统级扩展。Composer 安装阶段不检查,但运行时读写 Excel(尤其 .xlsx)会立刻崩。
- Linux(Debian/Ubuntu):运行
sudo apt install php-gd php-xml php-zip php-mbstring,然后重启 PHP-FPM 或 Apache - macOS(Homebrew + PHP):用
brew install php-gd php-xml php-zip php-mbstring,再确认php -m | grep -E "gd|xml|zip|mbstring"有输出 - Windows(XAMPP/WAMP):打开
php.ini,取消注释extension=gd、extension=xml等行,重启服务
读大 Excel 文件(>5MB)直接内存溢出?
默认全量加载进内存,10MB 的 .xlsx 可能吃掉 200MB+ RAM。别等报 Fatal error: Allowed memory size exhausted 才反应。
立即学习“PHP免费学习笔记(深入)”;
- 用
PhpOffice\PhpSpreadsheet\Reader\Xlsx的setReadDataOnly(true)降低开销 - 逐行读取:启用
setReadFilter()配合Row过滤器,或改用ChunkReadFilter分块处理 - 写入大文件时,禁用公式预计算:
$writer->setPreCalculateFormulas(false) - 必要时在脚本开头加
ini_set('memory_limit', '512M');,但治标不治本
最常被跳过的其实是 vendor/autoload.php 的路径问题和 GD 扩展状态验证——很多“安装成功”只是 Composer 没报错,一跑代码就挂,得挨个确认这两处。











