我是使用Apache和PHP 5.5的cPanel的经销商,我的服务器所有者刚刚在共享文件夹上安装了最新的PHPMailer,因此可以从以下位置访问:
require "PHPMailerAutoload.php";
但是,我所有当前站点都在我的类文件夹中有PHPmailer,并有一个扩展类来自定义每个站点的邮件程序详细信息。
所以,我的PHP类有:
require_once "class.phpmailer.php";
class ChoiceMailerSMTP extends PHPMailer {
/**
* Mailer
*
**/
我的问题是,因为我的服务器人已经放置了共享文件夹,新的PHPMailer,现在所有我需要的调用都在搜索共享文件夹 BEFORE 搜索本地文件夹,因此加载错误的phpmailer.class.php。
这真的很令人沮丧,虽然在这种情况下它只是一个麻烦 - 如果他把其他文件放在共享文件夹中供自己或其他人使用,我的意思是如何确保我的PHP包含和要求运行本地而不是共享文件?
我可以使用php.ini中的一行吗?或者也许是cPanel设置? 要求" ./ file"不起作用。
编辑:
我一直在对我的系统进行一些研究,发现set include path已设置为:
include_path = ".:/usr/lib/php:/usr/local/lib/php"
那么为什么只在include路径目录之后搜索本地目录的任何帮助?
答案 0 :(得分:1)
相对路径的包含顺序取决于设置包含路径,请参阅set_include_path
。您可以修改包含路径以确定本地文件夹的优先级,也可以使用包含的显式绝对路径开头:
require_once __DIR__ . '/class.phpmailer.php';
答案 1 :(得分:0)
共享版本有什么问题?它比你的年龄大吗?
您可以通过更改php.ini中的include_path
指令来调整搜索目录的顺序。
你应该加载自动加载器,因为它总是查找相对于它自己的类文件,所以,类似于@deceze的建议,你应该这样做:
require_once __DIR__ . '/PHPMailerAutoload.php';