Ошибка сервера (ограничение open_basedir) с PHP Mailer?

Я получаю ограничение open_basedir в случайное время, когда потребители заканчивают регистрацию на моем веб-сайте.

Я в состоянии нормально завершить процесс регистрации на своем компьютере, а также на двух других тестовых компьютерах, но, похоже, некоторые клиенты не могут этого сделать.

Когда я проверяю свои журналы ошибок, я нахожу следующее:

[Вт Фев 01 11:55:24 2011] [ошибка] [клиент 11.222.333.444] PHP Предупреждение: require() [function.require]: действует ограничение open_basedir. Файл (../phpmailer/class.phpmailer.php) находится вне допустимых путей: (/var/www/vhosts/aabbenefits.com/httpdocs:/tmp) в /var/www/vhosts/site.com/httpdocs/dir/email_inc.php в строке 3, реферер: https://www.site.com/previouspage

[Вт Фев 01 11:55:24 2011] [ошибка] [клиент 11.222.333.444] Предупреждение PHP: require(../phpmailer/class.phpmailer.php) [function.require]: не удалось открыть поток: операция не разрешена в /var/www/vhosts/site.com/httpdocs/dir/email_inc.php в строке 3, реферер: https://www.site.com/previouspage

[Вторник, 01 февраля 11:55:24 2011] [ошибка] [клиент 11.222.333.444] Неустранимая ошибка PHP: require() [function.require]: не удалось открыть файл '../phpmailer/class.phpmailer.php' (include_path) ='.:') в /var/www/vhosts/site.com/httpdocs/dir/email_inc.php в строке 3, реферер: https://www.site.com/previouspage

Может ли кто-нибудь дать какие-либо предложения?

2 ответа

Решение

Как сказал Alvosu, не только php.ini может содержать open_basedir. Он также часто встречается в файлах conf виртуального хоста самого httpd.conf. Возможно даже в.htaccess файлах.

Plesk также имеет тенденцию вставлять это в каждый создаваемый вами vhost conf. Если вы используете Plesk, вы увидите сгенерированную конфигурацию в /var/www/vhosts/site.com/conf/httpd.include, Это, вероятно, имеет линию php_admin_value open_basedir "/var/www/vhosts/site.com/httpdocs:/tmp" (в каком формате он обычно находится). Чтобы это исправить, не редактируйте файл httpd.include, так как Plesk все равно перезаписывает его. Вместо этого создайте файл с именем vhost.conf в той же папке. Содержание должно быть что-то вроде:

<Directory /var/www/vhosts/site.com/httpdocs>
php_admin_value open_basedir none
</Directory>

(или какое-то другое значение, а не ничего). Затем, когда вы создали этот файл, зайдите в Plesk и просто введите настройки хостинга для домена site.com и сохраните его без каких-либо изменений. Это заставит Plesk обнаружить файл vhost.conf и включить его в сгенерированный файл httpd.include.

Отключите open_basedir, отредактируйте php.ini(или.htaccess или conf виртуального хоста):

open_basedir none

или добавьте /var/www/vhosts/site.com в open_basedir

open_basedir /var/www/vhosts/aabbenefits.com/httpdocs:/var/www/vhosts/site.com/httpdocs:/tmp
Другие вопросы по тегам