2017-08-30 118 views
0

我正在通過Composer與Codeigniter + PHPMailer拼搏。 我得到這個錯誤:Codeigniter作曲家Phpmailer

Class 'PHPMailer' not found 

我有CI版本3.1.5,我已經使用下面的命令組成的PHPMailer 6.0.0:

composer require phpmailer/phpmailer 

在我的根文件夾,所以它創造了這樣的事情:

/CI_root 
|-- application 
|-- system 
|-- vendor 
| |-- phpmailer 
|  |-- phpmailer 
|   |-- language 
|   |-- src 
|-- composer.json 

裏面我的application/config/config.php文件有此行

$config['composer_autoload'] = FCPATH."vendor/autoload.php"; 

PS:我試圖改變到$config['composer_autoload'] = "./vendor/autoload.php";,以及

最後,根composer.json

{ 
"description": "The CodeIgniter framework", 
"name": "codeigniter/framework", 
"type": "project", 
"homepage": "https://codeigniter.com", 
"license": "MIT", 
"support": { 
    "forum": "http://forum.codeigniter.com/", 
    "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki", 
    "irc": "irc://irc.freenode.net/codeigniter", 
    "source": "https://github.com/bcit-ci/CodeIgniter" 
}, 
"require": { 
    "php": ">=5.3.7", 
    "phpmailer/phpmailer": "^6.0", 
    "mpdf/mpdf": "^6.1" 
}, 
"suggest": { 
    "paragonie/random_compat": "Provides better randomness in PHP 5.x" 
}, 
"require-dev": { 
    "mikey179/vfsStream": "1.1.*", 
    "phpunit/phpunit": "4.* || 5.*" 
} 

}

並且,控制器

public function index() 
{ 
    $mail = new PHPMailer(); 
    // other of stuff 

內部有趣的事情是mpdf加載沒關係。我在這裏錯過了什麼嗎?

在此先感謝!

+0

如果您使用的是PHPMailer 6.0,那麼應該更新「'php」:「> = 5.3.7」'以符合PHP 5.5要求。 – Synchro

+0

反正我在PHP 7.0上運行,但我會改變它! –

回答

4

作曲自動加載應該僅僅是TRUE:

$config['composer_autoload'] = TRUE; 

這是因爲笨已經知道你的作曲家自動加載的文件將在/application/vendor

在您想使用你的文件的頂部PHP郵件,可能需要類似:

use PHPMailer; 

其實,在PHPMailer的文檔,它們顯示:

//Import PHPMailer classes into the global namespace 
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 
+0

但是,然後CI看應用程序文件夾,它也接受一個文件夾,這就是爲什麼我可以加載mPDF就好。我相信這個問題在某種程度上與phpmailer有關。 –

+0

我更新了答案。你正在使用'使用PHPMailer;'在你想要使用它的文件的頂部? –

+1

不得不根據以下信息更新我的答案:https://packagist.org/packages/phpmailer/phpmailer –