自定义配置文件 - Codeigniter

时间:2012-02-28 13:41:45

标签: php codeigniter

我尝试创建包含我的电子邮件服务器配置的自定义电子邮件配置文件。

我在/ config目录下创建了它 代码如下:

<?php

$config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'smtp_user' => 'mertmetinbjk@gmail.com',
            'smtp_pass' => '*************',
            'mailtype' => 'html'
        );




        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");

?>

为了使用它我在我的kayit.php中调用它是一个控制器构造函数

 $this->config->load('email'); 

然而,我得到这样的错误 enter image description here

7 个答案:

答案 0 :(得分:6)

我引用手册:

  

如果您不想使用上述方法设置首选项,则可以   而是将它们放入配置文件中。只需创建一个名为的新文件   email.php,在该文件中添加$ config数组。然后保存文件   在config / email.php

配置文件只是AN ARRAY(名为$ config),只是它无法访问$ this引用。你正在使用的代码(例如,加载一个库)必须在配置文件中的控制器,不是

答案 1 :(得分:4)

您需要在email.php文件夹中创建一个名为./application/config/的文件,并在该文件中创建一个包含您的值的数组。在你的情况下它应该是

$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'mertmetinbjk@gmail.com',
        'smtp_pass' => '*************',
        'mailtype' => 'html'
    );

现在,只要您在应用程序中加载电子邮件库,它就会覆盖默认配置。请记住,阵列名称必须是config。

答案 2 :(得分:4)

由于此配置文件适用于built-in email class,因此如果它被称为config/email.php,则会自动加载。

  

如果您不想使用上述方法设置首选项,则可以   而是将它们放入配置文件中。只需创建一个名为的新文件   email.php,在该文件中添加$config array。然后保存文件   在config/email.php,它将自动使用。你不会   如果您保存,则需要使用$this->email->initialize()功能   配置文件中的首选项。

你不能(为什么会)在配置文件中调用$this->load

此外,您无法声明这样的配置文件。 $config = Array(,您正在覆盖$config中的所有其他值。您需要单独声明每个选项。

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'mertmetinbjk@gmail.com';
$config['smtp_pass'] = '*************';
$config['mailtype']= 'html';

答案 3 :(得分:2)

在配置/config/email.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'mertmetinbjk@gmail.com',
        'smtp_pass' => '*************',
        'mailtype' => 'html'
    );

在您的控制器中:

$this->config->load('email');
var_dump((array)$this->config); //show all the configs including those in the email.php

答案 4 :(得分:1)

您无法在配置文件中实例化方法,因为它尚未加载CodeIgniter实例。

答案 5 :(得分:1)

查看Codeigniter用户指南http://codeigniter.com/user_guide/libraries/email.html

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);


$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

echo $this->email->print_debugger();

答案 6 :(得分:0)

首先,您可以在 config / email.php 中删除 email.php 文件loacate。 在尝试你的代码之后。