Сервер PHP включает в себя поиск общих папок перед локальной папкой

0

Я являюсь реселлером на cPanel с Apache и PHP 5.5, и мой владелец сервера только что установил последний PHPMailer в общей папке, поэтому к нему можно получить доступ:

require "PHPMailerAutoload.php"; 

но все мои текущие сайты имеют PHPmailer в моей папке класса, с расширенным классом, чтобы настроить детали почтовой рассылки на каждый сайт.

Итак, мой класс PHP:

require_once "class.phpmailer.php";

class ChoiceMailerSMTP extends PHPMailer {
            /**
            * Mailer 
            *
            **/

Моя проблема заключается в том, что, поскольку мой парень-сервер надел общую папку, новый PHPMailer, теперь все мои вызовы требуют поиска в общей папке ПЕРЕД поиском в локальной папке и, следовательно, загрузкой неправильного phpmailer.class.php.

Это действительно разочаровывает, хотя в этом случае это (только) хлопот - если он помещает другие файлы в общую папку для себя или для других, как я должен понимать, что мой PHP включает и требует запуска локальных, а не общих файлов?

Есть ли строка в php.ini, которую я могу использовать? Или, может быть, настройка cPanel? require "./file" не работает.

РЕДАКТИРОВАТЬ:

Я занимался некоторыми исследованиями в своей системе и обнаружил, что set include path уже установлен:

include_path = ".:/usr/lib/php:/usr/local/lib/php"

Так любая помощь, почему локальный каталог просматривается только после включенных каталогов путей?

Теги:
require
phpmailer

2 ответа

1

set_include_path порядок относительных путей зависит от пути включения include, см. set_include_path. Вы можете либо изменить этот путь, чтобы указать приоритет вашей локальной папки, либо вы можете использовать явный абсолютный путь для включения, чтобы начать с:

require_once __DIR__ . '/class.phpmailer.php';
  • 0
    Я только что эту секунду обнаружил DIR для этого использования, я смотрю на использование set_include_path, ура
  • 0
    Кажется, что путь включения уже задан, как и ожидалось, поэтому я не уверен, из-за чего он сначала не ищет текущий каталог: - /. Однако использование DIR Magic Constant работает, но все равно требует входа и редактирования каждого вызова include: - /
0

Что случилось с общей версией? Он старше вас?

Вы можете настроить порядок поиска каталогов, изменив директиву include_path в php.ini.

Вы все равно должны загружать автозагрузчик, так как он всегда ищет файлы классов по отношению к самому себе, поэтому, подобно предложению @deceze, вы должны:

require_once __DIR__ . '/PHPMailerAutoload.php';
  • 0
    Дело в том, что общий файл имеет приоритет, когда сайт сделан с локальным файлом в качестве целевой цели. Дело в том, что это PHPMailer и Autoloaders, это не проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню