1. Главная страница » Компьютеры » Php admin value open basedir

Php admin value open basedir

Автор: | 16.12.2019

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

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

  • /etc/apache2/vhosts/ /

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

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

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

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

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

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

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

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

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

После включения этой настройки на наших серверах, скрипты оказались «заперты» внутри директории своего сайта (виртуального хоста). Файлы же продолжали загружаться в директорию для временных файлов, которая располагалась на другом разделе и не входила в дерево директорий сайта. Соответственно все скрипты, пытавшиеся обратиться к загруженным файлам через элемент tmp_name переменной $_FILES, терпели неудачу.

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

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

Обычно это делается в тех случаях, когда загруженный файл не предполагается хранить на сайте. Как правило это импорт прайс-листов (csv, xls), картинки, которые конвертируются перед сохранением в дереве файлов сайта. Часто $_FILES используется для проверки загруженной картинки (getimagesize) перед вызовом move_uploded_file.

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

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

Этот список включает встроенные директивы php.ini , которые вы можете использовать для настройки PHP. Директивы, которые обрабатываются модулями, перечислены и подробно описаны на страницах документаций соответствующих модулей. К примеру, информация о директивах сессий может быть найдена на странице документации сессий.

Представленные здесь значения по умолчанию используются в случае, если не был подключен 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_encoding NULL PHP_INI_ALL Доступна с версии PHP 5.4.0
zend.detect-unicode NULL PHP_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.
Читайте также:  Divinity original sin 2 руководство

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

Определяет, разрешается ли короткая форма записи ( ) тегов PHP. Если вы хотите использовать PHP совместно с XML, вы можете отключить эту опцию, чтобы беспрепятственно использовать . В противном случае, вы можете отобразить это при помощи PHP, например: ‘; ?> . Если же эта опция отключена, вы должны использовать длинную форму открывающего тега PHP ( ).

Эта директива также влияла на сокращение до версии PHP 5.4.0, которое идентично записи . Для использования этого сокращения должна была быть включена директива short_open_tag . Начиная с версии 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

Версия Описание
5.4.0 Удалена из PHP.
5.3.0 Генерирует ошибку уровня E_DEPRECATED .
5.0.0 Устарела и генерирует ошибку уровня E_COMPILE_WARNING .

Выдает факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7). До версии PHP 5.5.0 также показывались идентификаторы логотипов, таким образом, при добавлении их к ссылке на сайте с PHP показывался соответствующий логотип (например, » https://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Отключение данной опции также влияло на вывод функции phpinfo() , в этом случае логотип PHP и информация о разработчиках, принимавших участие в разработке PHP, не отображались.

В версии PHP 5.5.0 данные идентификаторы логотипов и функция php_logo_guid() были удалены, теперь для отображения логотипов используется механизм data URI. Таким образом добавление идентификатора логотипа к ссылке (для показа логотипа) больше не работает. Аналогично, выключение опции expose_php более не влияет на отображение логотипа PHP в выводе функции phpinfo() .

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

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

Читайте также:  Dashlane что за программа

Эта директива должна быть установлена в php.ini . Например, ее нельзя использовать в httpd.conf .

disable_classes string Эта директива позволяет отключить некоторые классы по причинам безопасности. Она принимает список имен классов, разделенных запятыми. disable_classes не подвержена влиянию безопасного режима. Эта директива должна быть установлена в php.ini . Например, ее нельзя использовать в httpd.conf . zend.assertions integer Если задано значение 1, проверочный код будет исполняться (режим разработки). Если задан , код проверок будет сгенерирован, одноко исполняться не будет. Если задано -1, проверочный код не будет генерироваться (продуктивный режим).

Если процесс стартован в режиме релиза, 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.

Литеральные строки должны быть транслитерированы из zend.script_enconding в mbstring.internal_encoding, как если бы вызвали mb_convert_encoding() .

Определяет, нужно ли проверять BOM (Byte Order Mark, метка порядка байт) и корректность многобайтных символов в файле. Эта проверка производится до вызова __halt_compiler() . Доступна только в режиме Zend Multibyte.

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

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

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

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

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

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

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

В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: —enable-memory-limit . Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.

Если используется integer , значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.

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

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

Имя По умолчанию Место изменения Список изменений
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 открывает большое количество файлов соответственно количеству выполняемых файловых операций.

Читайте также:  Hp laserjet enterprise 500 color m551dn

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

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

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

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

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

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

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

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

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

Устанавливает порядок обработки переменных EGPCS (Environment, Get, Post, Cookie, и Server). Например, если variables_order установлена в "SP", то PHP создаст superglobals $_SERVER и $_POST , но не будет создавать $_ENV , $_GET и $_COOKIE . Установка в "" означает, что ни одна superglobals не будет установлена.

Если включена устаревшая директива register_globals, то variables_order также устанавливает порядок экспорта переменных ENV, GET, POST, COOKIE и SERVER в глобальное пространство. Например, если порядок переменных установлен как "EGPCS", register_globals включена, и существуют обе $_GET[‘action’] и $_POST[‘action’] , то переменная $action будет содержать значение $_POST[‘action’] , так как P в нашем примере идет после G.

В CGI и FastCGI SAPI, в $_SERVER также добавляются значения переменных окружения; S всегда эквивалентна ES вне зависимости от самого положения E в этой директиве.

Эта директива также влияет на содержимое и порядок переменной $_REQUEST .

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

Если значение этой директивы не установлено, то используется значение директивы variables_order для содержимого переменной $_REQUEST .

Учтите, что файлы php.ini , поставляемые с дистрибутивом, по соображениям безопасности не содержат значение ‘C’ (cookies).

Когда включено, переменные 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 не может быть установлена во время выполнения скрипта ( ini_set() ). Тем не менее, вы можете использовать .htaccess , если ваш сервер позволяет это, как описано выше. Пример директивы в .htaccess : php_flag register_globals off .

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

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

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

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

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

*

code