Open basedir restriction in effect windows

Ошибка «Warning: Unknown: open_basedir restriction in effect.» (РЕШЕНО)

В работе PHP можно столкнуться с ситуацией, когда один и тот же скрипт нормально работает в одной папке и не запускается при перемещении в другую папку. Либо при установке веб приложения на сервере Linux оно может не работать, хотя веб сервер настроен правильно и другие сайты работают.

Либо проблема может следующая: PHP не может создать файл, открыть файл или записать в файл в папке, для которой у него достаточно привилегий или даже в папку, открытую для всех.

В логах веб-сервера могут быть примерно следующие сообщения:

В сообщениях упоминается open_basedir. Директива open_basedir указывается в конфигурационном файле PHP (php.ini) и устанавливает директории, к которым может иметь доступ PHP. Более подробную информацию о данной директиве вы найдёте в статье «Для чего нужна и как использовать open_basedir».

Для исправления этой ошибки откройте конфигурационный файл PHP, в Linux он расположен по пути /etc/php/php.ini.

Найдите в этом файле директорию open_basedir и добавьте папку, в которой вам нужно запустить PHP скрипт, либо в которой PHP должен иметь доступ к файлам. В Windows разделяйте директории символом ; (точкой с запятой). На всех остальных системах, разделяйте директории символом : (двоеточием). При работе в качестве модуля Apache, пути open_basedir автоматически наследуются от родительских директорий.

Если скрипт запускаете через веб-сервер, то перезапустите веб-сервер, чтобы он использовал новые настройки.

По этой же причине могут быть проблемы в работе phpMyAdmin, подробности смотрите в статье «$Cfg[‘TempDir’] (./tmp/) недоступен в phpMyAdmin (РЕШЕНО)».

Решение ошибки «Open_basedir restriction in effect. File(X) is not within the allowed path(s): Y»

Октябрь 22, 2012

Функция PHP open_basedir — это мера безопасности, которая предотвращает открытие файлов и скриптов, которые находится вне «домашней» директории. Если настройка PHP open_basedir включена, то все файловые операции ограничиваются одной папкой на сервере, не допуская доступа к скриптам неавторизованных пользователей. Когда скрипт пытается открыть файл, который находится вне корневой директории, например fopen() или gzopen(), проверяется путь у файлу. Когда файл находится вне разрешенной директории, PHP откажет в его выполнении и появится ошибка, вида:

Читайте также:  Посмотреть ресурсы mac os

Warning : file_exists() [ function .file-exists]: open_basedir restriction in effect. File(/home/user_name/public_ html /wp-content/uploads/2006/12/picture.jpg) is not within the allowed path(s): (/home/user_name:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/user_name/public_ html /wp-admin/inline-uploading.php on line 226

Ознакомьтесь с официальным руководством по PHP, чтобы узнать больше о функции open_basedir.

Мы рекомендуем Вам обратиться в Вашему хостинг-провайдеру, чтобы исправить ошибку.

Есть два способа решения проблемы:

Решением может послужить отключение этой функции, либо разрешение доступа к файлам некоторым привилегированным учетным записям, либо же разрешить доступ PHP скриптам к некоторым папкам.

Если Вы используете cPanel WebHost Manager ( WHM ), Вы можете легко отключить опцию open_basedir, или исключить некоторых пользователей из списка, для разрешения им доступа. В секции “Security” откройте “Tweak Security”, затем нажмите “Configure” для “Php open_basedir Tweak”. Здесь Вы можете включить или отключить php фунцию open_basedir, добавить или убрать некоторые хосты.

Если Вы используете панель управления хостингом Plesk, Вам нужно будет вручную отредактировать файл конфигурации Apache — vhost.conf и vhost_ ssl .conf, и добавить или изменить линии php_admin_value open_basedir на следующие:

php_admin_value open_basedir none php_admin_value open_basedir /full/path/to/dir:/full/path/to/ directory /httpdocs:/tmp

Пути к папкам (вверху пример), которые находятся после open_basedir, это директории, к которым разрешен доступ для PHP скриптов на сервере. Вы можете добавить сюда больше файлов и папок, разделяя их двоеточием “:”. Будьте внимательны, чтобы не нарушить безопасность Вашей системы.

После завершение, запустите команду ниже, чтобы изменения вступили в силу и перезапустите Apache httpd сервер (apache2ctl restart или httpd restart)

Если нужно вручную отредактировать настройки Apache , чтобы выключить защиту PHP open_basedir, откройте файл httpd.conf, найдите линию, которая начинается так:

Чтобы отключить функцию для определенной учетной записи на сервере, используйте следующую строчку:

php_admin_value open_basedir none

Вы всегда можете ограничить защиту для определенных папок, без его полного отключения функции open_basedir. Для этого просто внесите список разрешенных папок, разделяя их двоеточием. Например, для разрешения доступа к директории /new_ directory код будет таким:

php_admin_value open_basedir “/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp” php_admin_value open_basedir “/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_ directory ”

Перезапустите Apache сервер. Обратите внимание, что ограничение ввреху, это только префикс, а сама папка. Т.е. использование, к примеру, “open_basedir = /dir/incl” также откроет доступ к папкам “/dir/include” или “/dir/incls”, если таковые имеются. Для ограничения доступа только к одной специфической директории, используйте слеш в конце: “open_basedir = /dir/incl/”.

IT Блог Reset Button

Блог Reset Button обо всем на свете

[Решено] VestaCP (Vesta) open_basedir restriction in effect или правка любых опций в конфигах

У панели управления Vesta запрещен инклуд в папки отличные от %docroot% и %home%/%user%/tmp, поэтому если вам необходимо заинклудить любой файл выше чем public_html, то получится облом в виде

Читайте также:  Kmplayer для windows 4 pda

Решений в данном случае несколько.

Вариант №1 — поправить конфиг апача, он же «костыль» (ну куда же без него 🙂 )

, ищем файл *.conf с именем домена, открываем, ищем строку php_admin_value open_basedir и дописываем в конец через двоеточие нужный путь, перегружаем апач (или сервер) и все работает … но ровно до того момента, пока Vesta не сделает ребилд конфигов, например при изменении шаблона, поэтому более правильным является вариант №2

Вариант №2 — изменить шаблон генерации конфига домена

Сначала посмотрите на каком шаблоне работают ваши сайты, для этого необходимо перейти в раздел Web и посмотреть «Шаблон Web» для любого домена.

У меня он называется default, у вас он конечно может называться по другому.

Далее переходим в

открываем файлы файл default.tpl (или default.stpl для https) и добавляем нужные пути после php_admin_value open_basedir, при этот можно использовать переменные, в принципе по конфигу их назначение понятно , например если я хочу добавить каталог где лежат все домены я напишу %home%/%user%.

Далее ребилдим конфиги доменов, открываем список пользователей, выделяем пользователя, и в меню выбираем пересоздать Web

P.S. Если же нужно выполнить правку конфига только для одного домена, то можно пойти чуть другим путем (но это неточно)

Делаем копию файлов default.tpl и default.stpl (или как он у вас называется) с другим именем, правим новый файл как нужно, на вкладке конфига домена в браузере (как на верхней картинке) жмем «Редактировать» и выбираем «Шаблон WebAPACHE2» с новым именем, всё. Ребилдить конфиг не нужно т.к. он создается по новому шаблону.

6 thoughts on “[Решено] VestaCP (Vesta) open_basedir restriction in effect или правка любых опций в конфигах”

Спасибо, очень помог. Настраивал многосайтовость на битриксе: создал симлинки для дополнительных сайтов, но они не работали из-за open_basedir restriction. Ты всё очень четко расписал, красавчик.

Codeigniter open_basedir_restriction in effect on shared hosting

Message: mkdir(): open_basedir restriction in effect. File() is not within the allowed path(s): (/home/thelazyppl/:/home/thelazyppl:/tmp:/usr/local/lib/php/)

The site’s root folder is a wordpress website, so i’ve create a subdomain for the Codeigniter site named «Bazaar» in the root folder. I’ve already setup the base_url in the config.php and wordpress htaccess to allow the folder «Bazaar» but still nothing is working.

My host do not allow modifications for the php.ini file to disable open_basedir, is there another way to allow it or did i do something wrong in the process?

Читайте также:  Server linux web ���������

3 Answers 3

Your CodeIgniter installation is trying to save its session files to somewhere that is unwritable. As you’re on shared hosting, I would recommend storing your session data in a database.

Based on the filename causing the error, it looks like you’re on CodeIgniter 3. There is some info in the user guide on how to configure it correctly.

To keep using the files driver, you will need to change the contents of the $config[‘sess_save_path’] variable to point it to something like /tmp or /home/thelazyppl/tmp (after you created the tmp folder in your FTP outside your www or public_html directory).

The better option would be to use the database driver, for which the details are just below that.

If you were having these issues on CodeIgniter 2, you would need definitely need to enable the database. To do this you would change the $config[‘sess_use_database’] option to TRUE and then run the SQL shown in the CodeIgniter 2 user guide.

open_basedir restriction in effect in Plesk for Windows

I’m developing a CMS in PHP as a learning exercise but have hit a brickwall called «open_basedir restriction» — I am trying to upload a small JPG file. I’ve tried to give as much info as concisely as possible but let me know if I forgot anything!

I can see it hit the c:/windows/temp/ folder every time so its only falling over when trying to perform the move_uploaded_file operation.

After much research I know what this is and in theory how to fix it having read a number of pages online such as:

My Code

My PHPINFO

My PhpInfo results show that the root of my web hosting space is in the list of allowed folders:

The Error

PHP Warning: move_uploaded_file(): open_basedir restriction in effect. File(/img/articles/original/test.jpg) is not within the allowed path(s): (F:\PLESK\WWW\mydomain.com\httpdocs) in F:\PLESK\WWW\mydomain.com\httpdocs\sparklyphp\cms\modules\articles\edit\photos\index.php on line 40

More Errors

If I change my path

I get additional errors:

** Hosting Environment ** The website hosting environment a Windows 2008 R2 box with Plesk 11.5 (the latest version/update) running PHP 5.4.16 in FastCGI mode. I have full admin access to the entire server.

The most frustrating thing here is that the file is being uploaded to the temp folder, I just can’t get it from there!

Оцените статью