Назад | Перейти на главную страницу

Ошибка сервера (ограничение 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

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

Отключить 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

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

Plesk также имеет тенденцию помещать это в каждую создаваемую конфигурацию виртуального хоста. Если вы используете 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.