2012-06-08 57 views
1

我正在使用PHP内置邮件功能的PHP项目。我添加了使用Pear邮件的选项。PHP Pear Mail - 包含路径

看来,在大多数托管环境中,使用:

require_once('Mail.php') 

不工作,这是所有的例子我能找到演出。将包含路径写为:

require_once('/path/to/pear/Mail.php') 

也似乎不起作用。但是,设置包含路径如下:

set_include_path('/path/to/pear/') 
require_once('Mail.php') 

确实有效。因为我的应用程序中有一个配置文件,这里存储了这个配置文件,而且我的大多数页面都使用了这个配置文件(不需要使用电子邮件),但我不确定这是否是一个好主意。我的配置文件现在具有像这样存储的值:

// pear smtp mail settings 
set_include_path('/path/to/pear/'); 
define('PEAR_INCLUDE_PATH', 'Mail.php'); 
define('SMTP_HOST', 'ssl://smtp.gmail.com'); 
define('SMTP_PORT', '465'); 
define('SMTP_USER', '[email protected]'); 
define('SMTP_PASS', 'password'); 

这会对我造成问题吗?我应该怎么做?

谢谢

+0

我不认为有问题,如果没有在php.ini或apache配置中定义,则需要设置include请求 –

+0

如果您要更改包含路径,您应该追加它,而不是完全覆盖它:'set_include_path (get_include_path()。PATH_SEPARATOR。'/ path/to/pear /');' – DaveRandom

+0

@DaveRandom,谢谢,这是很好的信息。 – user1002039

回答

2

你的梨包括路径应该在全球范围内你的php.ini文件中设置 - 如果不是,你的破梨/ PHP的安装。

但是,如果你想成为偏执的人,你可以运送一个pear的Mail和Net_SMTP模块的本地拷贝。

+0

即使在托管环境中,路径也应该在全局范围内设置?这意味着我不应该设置路径只是调用Mail.php? – user1002039

+0

@ user1002039 php.ini中'include_path'的[默认值](http://www.php.net/manual/en/ini.core.php#ini.include-path)是'。:/ path/to/pear /' - 如果PEAR不在包含路径中,则没有正确安装。 FWIW,我更愿意使用[PHPMailer](http://phpmailer.worxware.com/)并将其与我的站点代码一起发货,而不是依靠PEAR,可能或不会安装 – DaveRandom

+0

@DaveRandom,谢谢!在托管环境中,我可以访问php.ini文件吗? – user1002039