Я получаю ограничение 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.