2017-08-30 2 views
0

Je suis aux prises avec Codeigniter + PHPMailer via Composer. Je reçois cette erreur:Codeigniter Compositeur Phpmailer

Class 'PHPMailer' not found 

J'ai la version 3.1.5 CI et je l'ai composé PHPMailer 6.0.0 en utilisant la commande suivante:

composer require phpmailer/phpmailer 

Dans mon dossier racine, il créé quelque chose comme ceci:

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

Dans mon application/config/config.php il y a cette ligne

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

PS .: J'ai essayé de changer de $config['composer_autoload'] = "./vendor/autoload.php"; ainsi

Et enfin, le composer.json racine

{ 
"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.*" 
} 

}

Et à l'intérieur du contrôleur

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

Chose drôle, les charges mpdf vont bien. Est-ce que j'ai râté quelque chose?

Merci d'avance!

+0

La ligne '" php ":"> = 5.3.7 "' devrait être mise à jour pour requérir PHP 5.5 si vous utilisez PHPMailer 6.0. – Synchro

+0

Je cours sur PHP 7.0 de toute façon, mais je vais changer ça! –

Répondre

4

Composer auto-chargement doit juste être TRUE:

$config['composer_autoload'] = TRUE; 

C'est parce que CodeIgniter sait déjà que votre compositeur fichiers automatiquement chargé seront /application/vendor

en haut de votre fichier dans lequel vous souhaitez utiliser PHP Mailer, probablement besoin de quelque chose comme:

use PHPMailer; 

en fait, dans les PHPMailer docs, ils montrent:

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

Mais alors CI regarde le dossier de l'application, Il accepte aussi un dossier, c'est pourquoi je peux très bien charger mPDF. Le problème est en quelque sorte avec phpmailer je crois. –

+0

J'ai mis à jour la réponse. Utilisez-vous 'use PHPMailer;' en haut de votre fichier où vous essayez de l'utiliser? –

+1

A dû mettre à jour ma réponse encore basée sur l'information à: https://packagist.org/packages/phpmailer/phpmailer –