Simfatic\FormHandler在Hostinger报错本地正常:找不到CommonValidations
部署Simfatic FormHandler到Hostinger后找不到CommonValidations类的调试建议
我用Simfatic\FormHandler开发了一个邮件发送表单,本地测试完全正常,但部署到Hostinger服务器后,出现了Simfatic\Boar\Library\CommonValidations类找不到的错误。已经尝试过清除并重新安装Composer包,也给仓库所有者提交了问题,现在需要更多调试方向。
用到的代码
require(__DIR__.'/vendor/autoload.php'); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); use Simfatic\FormHandler\FormHandler; use PHPMailer\PHPMailer\PHPMailer; use Dotenv\Dotenv; $form = new FormHandler(); $dotenv = Dotenv::createMutable(__DIR__); $dotenv->load(); $form->validate(function($validator) { $validator->field('email')->isEmail()->isRequired(); $validator->field('fullname')->isRequired(); $validator->field('jobtitle')->isRequired(); $validator->field('phonenumber')->isRequired(); $validator->field('postcode')->isRequired(); $validator->field('services')->isRequired(); $validator->field('info')->isRequired(); $validator->field('companyname')->isRequired(); })->configMailer(function($mailer) { $mailer->setFrom($_POST['email'], $_POST['fullname'], false); $mailer->isSMTP(); $mailer->SMTPDebug = true; $mailer->SMTPAuth = true; $mailer->Port = $_ENV['PORT']; $mailer->Host = $_ENV['HOST']; $mailer->Username = $_ENV['EMAIL']; $mailer->Password = $_ENV['PWD']; $mailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mailer->isHTML(true); $mailer->Body = "Body Goes Here"; $mailer->Subject = "Inquiry form submission from {$_POST['fullname']} @ {$_POST['companyname']}"; })->sendEmailTo($_ENV['EMAIL']); echo $form->process($_POST);
错误信息
"Simfatic\Boar\Library\CommonValidations" not found in
public_html/vendor/simfatic/boar/src/Boar.php:13 Stack trace: #0
public_html/vendor/simfatic/boar/src/Boar.php(18):
Simfatic\Boar\Boar->__construct() #1
public_html/vendor/simfatic/formhandler/src/FormHandler.php(39):
Simfatic\Boar\Boar::create() #2 public_html/mail.php(12):
Simfatic\FormHandler\FormHandler->__construct() #3 {main} thrown in
public_html/vendor/simfatic/boar/src/Boar.php on line 13
额外调试建议
- 检查Hostinger服务器的PHP版本,确保和本地开发环境一致,PHP版本差异(比如7.x和8.x)可能导致类加载逻辑异常
- 确认
vendor/autoload.php文件是否存在且内容完整,登录Hostinger文件管理器查看该文件的生成状态 - 在Hostinger的终端中执行
composer dump-autoload -o,强制生成优化后的类映射文件,修复自动加载的路径问题 - 检查
vendor/simfatic/boar/src/Library目录下是否存在CommonValidations.php文件,注意Linux服务器区分文件名大小写,本地Windows环境不区分,可能存在大小写不匹配的情况 - 调整vendor目录及子文件的权限,设置为755(目录)和644(文件),确保PHP进程有读取类文件的权限
- 添加临时调试代码,在
require autoload.php后加入:
查看系统尝试加载类的实际路径,定位文件缺失或路径错误的问题spl_autoload_register(function ($class) { echo 'Attempting to load: ' . $class . '<br>'; $file = __DIR__ . '/vendor/' . str_replace('\\', '/', $class) . '.php'; echo 'Looking at: ' . $file . '<br>'; }); - 检查Hostinger服务器是否开启了OPcache,若开启则清除OPcache缓存,避免旧的类映射被缓存导致加载失败
内容的提问来源于stack exchange,提问作者bceballos
相关产品推荐
相关产品推荐

