我在实例化(?)PHPMailer类时遇到了问题。如果我在require
作曲家的vendor/autoload.php
处理邮件功能页面的开头,我只能使它工作。PHP致命错误:找不到类'PHPMailer'
首先,这里是我的目录结构:
root
├─ www
│ ├─ includes
│ │ ├─ headers.php
│ │ └─ mail.php
│ └─ index.php
└─ vendor
├─ composer
│ ├─ ...
│ └─ ...
├─ phpmailer
│ ├─ ...
│ └─ ...
└─ autoload.php
文件index.php
开始:
<?php
require (__DIR__.'/includes/headers.php');
?>
文件includes/headers.php
开始:
<?php
require (__DIR__.'/../../vendor/autoload.php');
...然后就上设置时区和错误报告等。
我有一个index.php
的联系表格,它通过ajax提交POST数据到includes/mail.php
。
mail.php
看起来是这样的:
<?php
validate_post_data();
function validate_post_data() {
// Checks POST data is OK, then calls another
// function to send the mail using PHPMailer
if ($valid) {
send_mail ($name, $email, $message);
} else {
return "Error with POST data";
}
}
function send_mail($name, $email, $message) {
$mail = new \PHPMailer;
...
$mail->send();
}
?>
这将产生以下错误:
PHP message: PHP Fatal error: Class 'PHPMailer' not found in /srv/www/example.com/www/includes/mail.php
我可以只拿到剧本的工作,如果我把require(__DIR__.'/../../vendor/autoload.php')
在文件的开头mail.php
。
是否有
更好
完成此操作的正确方法?
谢谢。
如果你可以通过包含PHPMailer类的文件来获取脚本?嗯? –
我想是的,是的。我只是想:可以找不到类的原因是因为'mail.php'是通过ajax调用的,因此'mail.php'实际上不知道'index.php'包含哪些文件? (我不知道使用什么术语。) – Chris