Heroku部署PHP+PHPMailer应用报错:找不到vendor\autoload.php
问题解决:Heroku部署PHP应用后无法加载vendor/autoload.php
核心原因
你本地使用Windows/MAMP环境,路径分隔符用的是反斜杠\,但Heroku运行在Linux系统上,仅识别正斜杠/。代码里的require(vendor\autoload.php)在Linux环境下会被解析成单个文件名,而非vendor目录下的autoload.php文件,因此出现找不到文件的错误。
解决方案
1. 修正路径分隔符
将email.php第11行的代码修改为:
require 'vendor/autoload.php';
如果要兼顾跨平台兼容性(本地和Heroku都能正常运行),可以用更严谨的写法:
require __DIR__ . '/vendor/autoload.php';
__DIR__会获取当前脚本所在的绝对目录路径,避免相对路径带来的定位问题。
2. 确认依赖安装状态(可选)
从你的Heroku构建日志可以看到,Composer已经成功安装PHPMailer并生成了优化的autoload文件,vendor目录确实存在,只需修正路径引用即可。修改代码后重新部署即可恢复邮件功能。
额外提示
- 跨平台开发时,优先使用正斜杠作为路径分隔符,PHP在Windows和Linux环境下都能识别。
- 不手动上传
vendor目录的做法是正确的,Heroku会通过Composer自动处理依赖安装。
内容的提问来源于stack exchange,提问作者bacem
相关产品推荐
相关产品推荐

