我在實例化(?)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