php open basedir php ini

Для чего нужна и как использовать open_basedir

Директива open_basedir указывается в конфигурационном файле PHP (php.ini) и устанавливает директории, к которым может иметь доступ PHP. Под доступом понимаются любые действия с файлами: открытие (например, функции fopen() или gzopen()), записи и выполнения. Если директива open_basedir установлена и делается попытка запустить файл, который находится за пределами перечисленных директорий, то скрипт не запустится и выдаст ошибку:

Пример значения open_basedir:

php open basedir php ini. Смотреть фото php open basedir php ini. Смотреть картинку php open basedir php ini. Картинка про php open basedir php ini. Фото php open basedir php ini

В указанном примере разрешён запуск скриптов PHP, а также операции с файлами в директориях:

Директива open_basedir оказывает влияние на многие функции. Больше всего в ней смысла при использовании на уровне конфигурационных файлов веб-сервера на уровне директорий или виртуальных хостов.

По умолчанию, если значение open_basedir не установлено, разрешены файловые операции в любых директориях компьютера (на которые достаточно прав).

Специальное значение . (точка) обозначает, что рабочая директория скрипта будет использована в качестве базовой директории. Однако, это немного опасно, так как текущая директория скрипта может быть легко изменена с помощью chdir().

В httpd.conf, open_basedir может быть выключена (например, для некоторых виртуальных хостов) тем же способом, что и любая другая конфигурационная директива:

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

Источник

Open_basedir и cURL в php 5

CURLOPT_FOLLOWLOCATION в curl порой не работает из-за того что директива open_basedir в php.ini (и в httpd.conf на firstvds.ru) имеет значение, указывающее на директорию.

чтобы заставить curl работать, надо сделать так, чтобы значение директивы равнялось none.

Первым делом убедитесь в том, что в php.ini safe_mode = Off

Если безопасный режим выключен, необходимо отключить open_basedir.

На примере firstvds.ru:

Заходим от имени root на сервер по SSH.

Для этого можно использовать PuTTy

1 отключаем её в php.ini

chmod 774 /usr/local/etc/php.ini (чтобы можно было редактировать)

vim /usr/local/etc/php.ini (открываем в редакторе)

/ open_basedir (ищем по тексту)

зажимаем shift и жмём 2 раза Z – тем самым сохраняем файл и закрываем редактор

2 отключаем в httpd.conf

в виме открываем строку для ввода команд, путём нажатия Shift+6 (в англ. раскладке)

Там вводим:

%s/dir «/home/MY_SERVER/data:.»/dir none/g

вместо MY_SERVER указываем свою директорию, которая есть в конфиге

строка php_admin_value open_basedir “….”

заменяем кавычки и их содержимое на none

php_admin_value open_basedir none

зажимаем shift и жмём 2 раза Z – тем самым сохраняем файл и закрываем редактор

3 перезагружаем сервер в ISP Manager

Источник

Php open basedir php ini

Представленные здесь значения по умолчанию используются в случае, если не был подключён php.ini ; значения для боевого php.ini и для разработки могут различаться.

Языковые опции

Опции языка и прочих настроек

ИмяПо умолчаниюМесто измененияСписок изменений
short_open_tag«1»PHP_INI_PERDIR
precision«14»PHP_INI_ALL
serialize_precision«-1»PHP_INI_ALLДо версии PHP 7.1.0 значение по умолчанию было равно 17.
disable_functions«»Только PHP_INI_SYSTEM
disable_classes«»Только php.ini
exit_on_timeout«»PHP_INI_ALL
expose_php«1»Только php.ini
hard_timeout«2»PHP_INI_SYSTEMДоступна с версии PHP 7.1.0.
zend.exception_ignore_args«0»PHP_INI_ALLДоступна с версии PHP 7.4.0
zend.multibyte«0»PHP_INI_ALL
zend.script_encodingNULLPHP_INI_ALL
zend.detect_unicodeNULLPHP_INI_ALL
zend.signal_check«0»PHP_INI_SYSTEM
zend.assertions«1»PHP_INI_ALL с ограничениями

Краткое разъяснение конфигурационных директив.

Выдаёт факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7).

Эта директива позволяет отключить некоторые функции. Она принимает список имён функций, разделённый запятыми.

Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.

Если процесс стартован в режиме релиза, zend.assertions не может быть изменён во время выполнения, так как код утверждений не генерируется.

Когда истечёт время ожидания, установленное в max_execution_time, среда выполнения PHP аккуратно отключит ресурсы. Если во время этого что-то застрянет, время ожидания будет установлено на указанное количество секунд. Когда истечёт жёсткое время ожидания, PHP завершит работу с ошибкой. Если установлено значение 0, жёсткое время ожидания никогда не активируется.

Когда PHP останавливается после жёсткого времени ожидания, это будет выглядеть примерно так:

Исключает аргументы из трассировки стека, сгенерированных из исключений.

Разрешает парсинг исходных файлов в многобайтных кодировках. Включение zend.multibyte требуется для использования кодировок символов подобных SJIS, BIG5 и т.д., содержащих специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например UTF-8, EUC и т.д., не требуют эту опцию.

Модуль zend.multibyte требует установленного модуля «mbstring».

Данное значение будет использовано, только при отсутствии директивы declare(encoding=. ) в начале скрипта. При использовании кодировок несовместимых с ISO-8859-1, нужно использовать опции и zend.multibyte и zend.script_encoding.

Определяет, нужно ли проверять заменённые обработчики сигналов при завершении скрипта.

Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошёл тайм-аут исполнения скрипта PHP. Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые модули в несогласованном состоянии. По завершении процесса все неснятые блокировки или память будут очищены.

Ограничения ресурсов

Ограничения ресурсов

ИмяПо умолчаниюМесто измененияСписок изменений
memory_limit«128M»PHP_INI_ALL

Краткое разъяснение конфигурационных директив.

Настройка производительности

Настройка производительности

ИмяПо умолчаниюМесто измененияСписок изменений
realpath_cache_size«4M»PHP_INI_SYSTEMДо PHP 7.0.16 и 7.1.2, по умолчанию было «16K»
realpath_cache_ttl«120»PHP_INI_SYSTEM

Использование open_basedir отключит кеш realpath.

Краткое разъяснение конфигурационных директив.

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

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

Размер, необходимый для кеширования, зависит от системы.

Время (в секундах) в течение которого будет использован кеш realpath для указанного файла или директории. Для систем с редко меняющимися файлами это значение можно увеличить.

Обработка данных

Конфигурационные опции обработки данных

ИмяПо умолчаниюМесто измененияСписок изменений
arg_separator.output«&»PHP_INI_ALL
arg_separator.input«&»PHP_INI_PERDIR
variables_order«EGPCS»PHP_INI_PERDIR
request_order«»PHP_INI_PERDIR
auto_globals_jit«1»PHP_INI_PERDIR
register_argc_argv«1»PHP_INI_PERDIR
enable_post_data_reading«1»PHP_INI_PERDIR
post_max_size«8M»PHP_INI_PERDIR
auto_prepend_fileNULLPHP_INI_PERDIR
auto_append_fileNULLPHP_INI_PERDIR
default_mimetype«text/html»PHP_INI_ALL
default_charset«UTF-8»PHP_INI_ALL
input_encoding«»PHP_INI_ALL
output_encoding«»PHP_INI_ALL
internal_encoding«»PHP_INI_ALL

Краткое разъяснение конфигурационных директив.

Этот разделитель используется в генерируемых PHP URL в качестве разделителя аргументов.

Список разделителей, используемых PHP для получения переменных из URL.

Каждый символ в этой директиве считается разделителем!

Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.

Когда включено, переменные SERVER, REQUEST и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведёт к росту производительности.

Использование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.

Источник

Php admin value open basedir

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

Но некоторые движки сайтов (к примеру, 1С-Битрикс) для увеличения скорости работы настоятельно рекомендуют отключение данного параметра для сайта. Чтобы отключить его, следует отредактировать конфигурационный файл веб-сервера Apache. Этот файл или его часть с настройками сайта располагается в разных местах в зависимости от ОС, дистрибутива и используемой версии ISPmanager.

Найти раздел и для конкретного сайта и заменить параметр

Также конфигурационный файл можно исправить под root через интерфейс ISPmanager — Домены — WWW-домены — выделить нужный веб домен — кнопка «Конфиг»

php open basedir php ini. Смотреть фото php open basedir php ini. Смотреть картинку php open basedir php ini. Картинка про php open basedir php ini. Фото php open basedir php ini

php open basedir php ini. Смотреть фото php open basedir php ini. Смотреть картинку php open basedir php ini. Картинка про php open basedir php ini. Фото php open basedir php ini

Если нужно вообще отключить open_basedir и для всех последующих веб доменов, то в конфигурационный файл ISPmanager (/usr/local/mgr5/etc/ispmgr.conf) нужно прописать

После правки конфигурационного файла перезапустить core

Соответственно, в конфиг каждого нового VirtualHost будет добавлено

Казалось бы вопрос загрузки файлов на сервер обсосан до косточек, но одно недавнее событие заставило меня в этом усомниться.

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

По ссылке много букв (которые всё-таки рекомендуется прочитать), здесь же напишу кратко:

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

Так в чём же тогда проблема? А проблема вот в чём: многие (действительно многие!) обращаются к загруженным файлам именно напрямую, в обход стандартных функций.

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

P. S. Кто-то может сказать «нефиг так конфигурировать сервера, что скрипты перестают работать». Однако я считаю, что если настройка есть, то кто-нибудь её обязательно использует. И если ваша программа после этого перестанет работать, то камни полетят в вас. Оно вам (нам) надо?

Представленные здесь значения по умолчанию используются в случае, если не был подключен php.ini ; значения для боевого php.ini и для разработки могут различаться.

Языковые опции

Опции языка и прочих настроек

ИмяПо умолчаниюМесто измененияСписок изменений
short_open_tag«1»PHP_INI_PERDIR
asp_tags«0»PHP_INI_PERDIRУдалена в PHP 7.0.0.
precision«14»PHP_INI_ALL
serialize_precision«-1»PHP_INI_ALLДо версии PHP 5.3.5 значение по умолчанию было равно 100. До версии PHP 7.1.0 значение по умолчанию было равно 17.
y2k_compliance«1»PHP_INI_ALLУдалена в PHP 5.4.0.
allow_call_time_pass_reference«1»PHP_INI_PERDIRУдалена в PHP 5.4.0.
disable_functions«»Только PHP_INI_SYSTEM
disable_classes«»Только php.ini
exit_on_timeout«»PHP_INI_ALLДоступна с версии PHP 5.3.0.
expose_php«1»Только php.ini
hard_timeout«2»PHP_INI_SYSTEMДоступна с версии PHP 7.1.0.
zend.multibyte«0»PHP_INI_ALLДоступна с версии PHP 5.4.0
zend.script_encodingNULLPHP_INI_ALLДоступна с версии PHP 5.4.0
zend.detect-unicodeNULLPHP_INI_ALLДоступна с версии PHP 5.4.0
zend.signal_check«0»PHP_INI_SYSTEMДоступна с версии PHP 5.4.0
zend.assertions«1»PHP_INI_ALL с ограничениямиДоступна с версии PHP 7.0.0.
zend.ze1_compatibility_mode«0»PHP_INI_ALLУдалена в PHP 5.3.0
detect_unicode«1»PHP_INI_ALLДоступна с версии PHP 5.1.0. Переименована на zend.detect-unicode с версии PHP 5.4.0.

Краткое разъяснение конфигурационных директив.

Changelog for asp_tags

ВерсияОписание
7.0.0Удалена из PHP.

precision integer Количество значащих цифр, отображаемых для чисел с плавающей точкой. -1 означает, что будет использован усовершенствованный алгоритм для округления таких чисел. serialize_precision integer Количество сохраняемых значащих цифр при сериализации чисел с плавающей точкой. -1 означает, что будет использован усовершенствованный алгоритм для округления таких чисел. y2k_compliance boolean Включение совместимости с 2000 годом (создаст проблемы с несовместимыми браузерами) allow_call_time_pass_reference boolean

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

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

Список изменений для allow_call_time_pass_reference

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

Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.

Если процесс стартован в режиме релиза, zend.assertions не может быть изменен во время выполнения, так как код утверждений не генерируется.

Если процесс стартован в режиме разработки, zend.assertions не может быть выставлен в -1 во время выполнения..

Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов (объекты без свойств приводятся к FALSE или 0) и сравнение объектов. В этом режиме объекты по умолчанию передаются по значению вместо ссылки.

Эта возможность была помечена УСТАРЕВШЕЙ и БЫЛА УДАЛЕНА в версии PHP 5.3.0.

Разрешает парсинг исходных файлов в многобайтных кодировках. Включение zend.multibyte требуется для использования кодировок символов подобных SJIS, BIG5 и т.д., содержащих специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например UTF-8, EUC и т.д., не требуют эту опцию.

Разрешение zend.multibyte требует установленного расширения «mbstring».

Данное значение будет использовано, только при отсутствии директивы declare(encoding=. ) в начале скрипта. При использовании кодировок несовместимых с ISO-8859-1, нужно использовать опции и zend.multibyte и zend.script_encoding.

Определяет, нужно ли проверять замененные обработчики сигналов при завершении скрипта.

Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошел тайм-аут исполнения скрипта PHP. Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые расширения в несогласованном состоянии. По завершении процесса все неснятые блокировки или память будут очищены.

Ограничения ресурсов

Ограничения ресурсов

ИмяПо умолчаниюМесто измененияСписок изменений
memory_limit«128M»PHP_INI_ALL«8M» до PHP 5.2.0, «16M» в PHP 5.2.0

Краткое разъяснение конфигурационных директив.

Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

Настройка производительности

Настройка производительности

ИмяПо умолчаниюМесто измененияСписок изменений
realpath_cache_size«4M»PHP_INI_SYSTEMДоступна с версии PHP 5.1.0. До PHP 7.0.16 и 7.1.2, по умолчанию было «16K»
realpath_cache_ttl«120»PHP_INI_SYSTEMДоступна с версии PHP 5.1.0.

Использование open_basedir отключит кеш realpath.

Краткое разъяснение конфигурационных директив.

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

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

Размер, необходимый для кэширования, зависит от системы.

Время (в секундах) в течение которого будет использован кэш realpath для указанного файла или директории. Для систем с редко меняющимися файлами это значение можно увеличить.

Обработка данных

Конфигурационные опции обработки данных

ИмяПо умолчаниюМесто измененияСписок изменений
arg_separator.output«&»PHP_INI_ALL
arg_separator.input«&»PHP_INI_PERDIR
variables_order«EGPCS»PHP_INI_PERDIRPHP_INI_ALL в PHP = 5.6.0; пустая для PHP arg_separator.output string

Этот разделитель используется в генерируемых PHP URL в качестве разделителя аргументов.

Список разделителей, используемых PHP для получения переменных из URL.

Каждый символ в этой директиве считается разделителем!

Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.

Когда включено, переменные SERVER, REQUEST и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведет к росту производительности.

Директивы PHP register_globals, register_long_arrays и register_argc_argv должны быть выключены для правильной работы этой директивы. Начиная с версии PHP 5.1.3 стало необязательно выключать register_argc_argv.

Использование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.

Регистрировать или нет переменные EGPCS (Environment, GET, POST, Cookie, Server) в качестве глобальных переменных.

Начиная с версии » PHP 4.2.0, значением по умолчанию для этой директивы является off.

Пожалуйста, ознакомтесь с главой о безопасности Использование глобальных переменных для получения дополнительной информации.

На поведение register_globals влияет директива variables_order.

Данная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.

Данная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.

Источник

PHP open_basedir

How to enabled PHP open_basedir in CWP
** Note this is only for PHP-CGI

We have two options
— global config, one config file in the include folder /usr/local/php/php.d/ and in PHP selector include folders
— per-user config, the securest option as it restricts the user to his /home/USERNAME folder and also disables users from using custom php.ini files.

Global Configuration
The securest method do this correctly and to prevent users from overriding this is to place the config into the include file. Please note that if you set this into /usr/local/php/php.ini then custom user php.ini will be able to disable it. Please note that global config allows full /home folder access while per user restricts users to /home/USERNAME folder which is much more secure.

One line command to create a file and config:

You can also do it by yourself by creating a file: /usr/local/php/php.d/open_basedir.ini with the following content:

To enable it for other php versions from the PHP selector you can create this config files with the same content:

PHP info file example phpinfo.php

** Don’t forget to replace the USERNAME.

Please note that this option will also disable all further custom users php.ini files per folder, for example: /home/USERNAME/public_html/php.ini will not be loaded.

You can also place it into public_html folder but then users will be able to run custom php.ini files per folder and they can disable open_basedir.

RECOMMENDATION
We recommend using the per-user configuration of open_basedir as it will provide much higher security and isolate each client.

NGINX + PHP-FPM
configuration files are:
/etc/nginx/conf.d/vhosts/DOMAIN.conf
/etc/nginx/conf.d/vhosts/DOMAIN.ssl.conf

under fastcgi_param add one more line and reload/restart nginx

** Note that manual editing of the webserver vhost files is not recommended as those files get rebuilt from the template on each change.
Try checking the instructions here for the custom template build.

APACHE + PHP-FPM
Configuration files are all user existing php-fpm configuration files, to get the list of files you can use this

** Note that editing any of those files requires to restart php-fpm version you edited.

** Note that manual editing of the webserver vhost files is not recommended as those files get rebuilt from the template on each change.
Try checking the instructions here for the custom template build.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *