Все статьи >> Редактирование php.ini (просмотров: 7561)

Редактирование php.ini

Редактирование php.ini
Файл конфигурации PHP php.ini очень длинный, и обескураживает новичков в программировании, но здесь не о чем беспокоиться. Это обычный текстовый файл, и одна из причин его длины, это содержание обширных комментариев, объясняющих различные настройки. Тем не менее, хорошей идеей является сделать резервную копию перед редактированием php.ini в случае, если вы допустили ошибку.
Как вы открываете php.ini для редактирования зависит от вашей операционной системы и от того, как вы установили PHP:
  • Если вы использовали пакет «всё-в-одном», например, такой как XAMPP на Windows, дважды щелкните php.ini в Проводнике Windows. Файл автоматически откроется в Notepad.
  • Если PHP установлен с помощью инструмента Microsoft Web PI, php.ini, как правило, находится в подпапке Program Files. Хотя открыть php.ini можно дважды щелкнув по нему, вы не сможете сохранить какие-либо изменения. Вместо этого выберите Start => All Programs => Accessories, щелкните правой кнопкой мыши по Notepad, и выберите Run as Administrator из контекстного меню. В программе Notepad выберите File => Open и установите параметр для отображения All Files (*.*). Перейдите к папке, в которой находится php.ini, выберите файл и нажмите кнопку Open.
  • В Mac OS X php.ini отображается в Finder как исполняемый файл. Используйте текстовый редактор, такой как BBEdit или TextWrangler (оба доступны из www.barebones.com), чтобы открыть php.ini.


Для директив, которые используют On (включить) или Off (выключить), просто измените значение на рекомендуемое. Например, если необходимо включить отображение сообщений об ошибках, отредактируйте данную строку:
display_errors = Off
Замените ее на следующую:
display_errors = On

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

Для PHP 5.3, директива должна выглядеть следующим образом:
error_reporting = E_ALL | E_STRICT
Сивол между E_ALL и E_STRICT это вертикальная черта. На большинстве клавиатур её можно вставить, удерживая нажатой клавишу Shift и набрав обратную косую черту.
Чтобы установить уровень сообщений об ошибках на PHP 5.2, используйте следующую строку:
error_reporting = E_ALL

После редактирования php.ini, сохраните файл и перезапустите Apache или IIS, чтобы изменения вступили в силу.
Если веб-сервер не запустится, проверьте лог-файлы, как описано ранее в этой главе, и вы будете благодарны, если последовали совету и сделали резервную копию php.ini перед его редактированием. Начните заново с новой копией php.ini и внимательно проверьте свои изменения.

Настройки языка

engine = On

Директива разрешает (on) или запрещает (off) работу скриптов на РНР под управлением сервера Apache.

short_open_tag = On

Директива разрешает (on) или запрещает (off) использование коротких тегов <?. В противном случае могут использоваться только теги <?php. asp tags = Off

Директива запрещает (off) или разрешает (On) использование тегов в стиле

ASP (<% %>).

Precision - 12

Директива залает число значащих цифр после запятой для чисел с плавающей точкой.

output_buffering = 4096

Директива включает буферизацию вывода с одновременным указанием размера буфера вывода в байтах. Включен ная директива (output_buffering = on) позволяет посылать заголовки, в том числе и cookie после вывода текста. В случае, если размер буфера не указан, используется максимально возможный размер буфера.

implicit_flush = Off

Действие этой директивы аналогично вызову функции flush (функция, очищающая буфер вывода РНР) после каждого применения функций print или echo и после каждого HTML-блока. Использование указанной директивы серьезно замедляет выполнение скриптов, поэтому по умолчанию она отключена, и использовать ее рекомендуется только в целях отладки. allow_call_time_pass_reference = Off

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

safe_mode = Off

Директива отключает (off) или включает (on) безопасный режим.

highlight.string = #DDOOOO highlight.comment = #FF8000 highlight.keyword = #007700 highlighl.bg = #FFFFFF highlight.default = iOuOOBB highlight. html = #000000

Набор данных директив определяет цвета, используемые для раскраски синтаксиса РНР при вызове функций highlight_string.

 Ограничение по ресурсам

max_execution_time = 30

Директива определяет, что максимальное возможное время выполнения скрипта составляет 30 секунд.

max_input_time = 60

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

memory_limit= 8М

Директива определяет, что максимальный объем памяти, выделяемый одному сценарию, составляет 8 Мбайт.

 Обработка ошибок и журнализация

error_reporting

Директива error reporting задается в виде битового поля, т. е. ее значение устанавливается с помощью нижеперечисленных констант, объединенных оператором | (or):

? e all (все предупреждения и ошибки);

? е_parse (ошибки трансляции);

? e notice (замечания во время выполнения, которые сообщают о возможных логических ошибках в скрипте; к этому типу ошибок относятся, к примеру, предупреждения об использовании неинициализированных переменных);

? e core errqr (фатальные ошибки при старте РНР);

? е fore warning {предупреждения при старте РНР);

? e compile error (фатальные ошибки при компиляции);

? е_сомрile_warning (предупреждения при компиляции);

? e_user_error (ошибки, вызванные действиями пользователя);

? e user marking (предупреждения, вызванные действиями пользователя);

Таким образом, для того, чтобы отображ&тись все ошибки, за исключением замечаний о возможных логических ошибках в сценарии, нужно установить директиву error_reporting следующим образом:

error_reporting = ~E_ALL & ~Е NOTICE

Для того чтобы показывать только ошибки, директива должна быть настроена так, как показано ниже:

error__reporting = !E_COMPILE_ERRORIE_ERRORIE_CORE_ERROR
display_errors = Off

Директива запрещает вывод ошибок и предупреждений в браузер. При отладке приложений следует включить эту директиву, б реальной же работе лучше ее отключить (в РНР 5 по умолчанию она отключена), поскольку при включенной dispiay errors посетитель может получить доступ к секретной информации. Вместо этой директивы можно использовать журнализацию. display_startup__errors = Off

Директива отключает (off) или разрешает (on) отображение ошибок, возникающих при старте РНР.

log_errors = Off

Директива отключает (off) или разрешает (on) сохранение сообщений об ошибках в файле журнала.

log__errors_max_len = 1024

Директива задает максимальную длину файла журнала.

track errors = Off

Директива отключает (off) или включает (on) сохранение сообщения о последней ошибке в переменной $php_erronr,sg

html_errors = Off

Директива отключает (off) или включает (on) вывод возможных сообщений об ошибках в HTML.

error_log = filename

Данная директива позволяет вести журнал в файле filename.

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

Директива track_vars всегда включена начиная с версии РНР 4.0.3.

variables_order - "EGPCS"

Эта директива определяет порядок регистрации переменных get, post, cookie. Environment и серверных переменных (соответственно g, р, с, е и s). Регистрация осуществляется путем чтения этой строки слева направо. По умолчанию в РНР 5 директиве присвоено значение gpcs.

Если установить директиве variables_order значение GP, то регистрация переменных будет проводиться только для переменных, передаваемых методами post и get. При этом все переменные, передаваемые через cookie, а так же серверные переменные и переменные окружения будут игнорироваться.

register_globals = Off

Данная директива отключает (off) или включает (on) возможность регистрации EGPCs-переменных как глобальных переменных. Использование глобальных переменных может создать "дыры" в защите сценария, поэтому по умолчанию эта директива отключена.

Директива register globals является одним из самых дискуссионных моментов в языке РНР. С одной стороны, ее использование действительно может породить реальные проблемы с защитой PHP-сценариев при ненадлежащем учете возможных ошибочных ситуаций, и многие разработчики справедливо отмечают, что написание скриптов без использования глобальных переменных на 90% уменьшает уязвимость скриптов к различного рода атакам. С другой стороны, на заре возникновения РНР не одна тысяча пользователей доверилась разработчикам языка (до версии РНР 4,3 эта директива была по умолчанию включена), в силу чего в настоящее время имеются миллионы функционирующих скриптов, написанных с использованием глобальных переменных. (Стоит отметить, что в обучающих целях иногда совершенно нелишне писать скрипты с использованием глобальных переменных, поскольку их замена на суперглобальные массивы сильно ухудшвет читабельность кода.)

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

register_long_arrays = Off

Директива, разрешающая (on) или запрещающая (off) использование для передачи переменных из форм длинных массивов вида $http_get_vars, $http_post_vars и т. д. Если данная директива отключена, следует пользоваться новыми суперглобальными массивами вида $_get, $_post и т. д.

Выставленное по умолчанию значение (Off) для этой директивы, является весьма спорным, поскольку реальных опасений с точки зрения защиты при включенной директиве register_long_arrays возникать не должно. Многие же разработчики предпочитают в силу привычки использовать суперглобальные массивы вида $http_get_vars вместо $__get. Если же указанная директива выключена, естественно, такой код перестает быть рабочим.

post_max_size = 8М

Директива определяет максимальный размер данных, преданных методом

post.

magic_quotes_gpc = Off

Данная директива позволяет отключить (off) или включить (on) автоматическая обработку магических кавычек и апострофов, в данных get, post, и Cookie.

magic_quotes_runtime = Off

Директива позволяет отключить (off) или включить (on) возможность выполнения заключенных в магические кавычки команд ('something').

Пути и директории

; UNIX: "/pathl:/path2" ;include_path = ".:/php/includes"

; Windows: "\pathl;\path2" ;includs_path = ".;c:\php\includes"

Пути, в которых находятся PHP-сценарии.

doc_root; -

Директива залает корневой каталог для РНР-сценариев,

extension_diг = "./"

Директива задает каталог, в котором размещаются динамически загружаемые расширения.

enable_dl = On

Директива, разрешающая (on) или запрещающая (off) использование функции dl.

Функция dl предназначена для загрузки расширений РНР, к примеру, таких как SQLLite. Указанная функция неправильно работает в многопоточных Web-серверах (IIS, Zeus) и для них автоматически отключается.

 Загрузка файлов

file_uploads = On

Директива, разрешающая (on) или запрещающая (off) загрузку файлов на сервер.

upload_max_filesize = 2М

Директива, задающая максимальный размер загруженных файлов.

 Работа с сокетами

allow uilfcpen = On

Директива, разрешающая (on) или запрещающая (off) использование URL (http://, ftp://) как файлов.

Указанная директива обязательно должна быть включена при работе с сокетами.

user_agent="PHP"

Директива, задающая значение переменной user_agent, предоставляемой сервером при подключении с использованием сокета.

default_socket_timeout = 60

Директива, задающая максимальное время прослушивания сокета, в секундах.

 Динамические расширения

Для автоматической загрузки динамических расширений директиву extens ion необходимо задать следующим образом:

e>:tension=modulename.extension К примеру, для Windows можно написать так:

extension=msql.dll

А для UNIX так:

extension=msql.so

Здесь задается только имя, без указания пути. Если необходимо указать путь, следует использовать вышеописанную директиву extension dir.

 Установки для модулей Модуль Syslog

define_sysiog_variables = Off

Директива, определяющая, следует (on) ил» нет (off) использовать различные переменные демона syslog, такие как $log fid, $log_cron и т. д. Для ускорения работы данную директиву рекомендуется отключать, а при необходимости использовать функцию defirie_syslog_variables.

Модуль mail function

SMTP = localhost

Эта директива предназначена только для использования в среде Windows и задает используемый SMTP-сервер.

sendmail_from = admin@iocalhost

Эта директива предназначена только для использования в среде Windows и задает поле From по умолчанию.

sendmail__path = \usr\sbin\sendmail -t -i

Данная директива используется только в среде UNIX и задает путь и аргументы демона sendmail.

Модуль Debugger

debugger.enabled = On debugger.profiler_enabled = On

Директивы, отвечающие за включение (on) или отключение (off) отладчика и профилировщика.

Модуль Java

java.class.path = .\php_java.jar java.home = c:\jdk

java. library = с: \jdk\jre\bir.\hotspot\jта,dll java.library.path = .\

Пути и каталоги для Java.

uodbc.allowj>ersistent = On

Директива разрешает (on) или запрещает (off) постоянные ODBC-соединений.

uodbc.check_persistent - On

Директива включает (on) или отключает (off) проверку доступности ODBC-соединения перед его использованием.

uodbc,max_persistent = -1

Директива, определяющая максимальное число постоянных ODBC-соеди-нений. Значение -1 означает, что ограничений нет.

uodbc. ixiax_l inks = -1

Директива, определяющая максимальное число как постоянных, так и непостоянных ODBC-соединений. Значение -1 означает, что ограничений нет.

uodbc.defaultlri = 4096 Длина для long-полей. uodbc.defaultbinmode = 1

Директива, устанавливающая параметры для работы с бинарными данными. Значение о означает режим passthru, 1 — режим as is, 2 — режим преобразования в символы.

Модуль MySQL

mysql.allow_persistent = On

Директива разрешает (on) или запрещает (off) постоянные MySQL-соединений.

mysql,max_persistent - -1

Директива, определяющая максимальное число постоянных MySQL-соединений. Значение -i означает, что ограничений нет.

rr.ysql.max links = -1

Директива, определяющая максимальное число как постоянных, так и непостоянных MySQL-соединений. Значение -1 означает, что ограничений нет.

mysql.default_port =

Директива, определяющая порт, заданный по умолчанию для функции

mysql_connect. При незаданном значении функция mysql..connect использует переменную $mysql_tcp_pqrt или запись mysqi-tcp в каталоге /etc/services, а затем заданную во время компиляции константу mysql_port (именно в таком порядке).

При работе в среде Windows используется только константа mysql port. mysql.default_socket =

Директива, определяющая имя сокета для локальных соединений MySQL. При незаданном значении используется значение по умолчанию.

mysql.default_host =

Директива, задающая имя хоста по умолчанию для функции

mysql_connect(). mysql.default_user =

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

mysql_connect(). mysql.default_password =

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

Хранить пароль в файле настроек РНР вряд ли стоит, поскольку любой пользователь, имеющий права на запуск РНР, может узнать пароль путем выполнения сценария echo cfg_get_var("mysql.default_passwcrd").

В безопасном режиме три последние директивы не работают.

Далее перечислены директивы файла php.ini для других СУБД, полностью аналогичные рассмотренным.

Модуль bcmath

bcmath.scale = О

Директива, определяющая число десятичных цифр для всех bcmath-функций (математические функции произвольной точности).

Модуль Session

session. save_handler = files

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

session. s«*>s_path - ftinp

Если в предыдущей директиве указан режим хранения данных в файлах, то в этой директиве указывается каталог, в который помещаются файлы сессий.

session.use__cookies = 1

Директива, определяющая, можно ли использовать Cookies (по умолчанию использование Cookies разрешено).

session.name = PHPSESSTD

Директива, задающая имя сессии по умолчанию.

session.auto_scart = О

Директива, разрешающая или запрещающая иници&тизацию сессии при старте (по умолчанию отключена).

session.cockie_lifetime = О

Определяет время жизни Cookie по умолчанию. Если директива принимает значение 0, то срок жизни Cookie длится до закрытия браузера.

session.cookie_path = /

Директива, задающая путь, по которому сохраняются идентификаторы Cookie.

session. cookie_dornain —

Определяет домен для Cookie (параметр по умолчанию для функции

setcookie).

session.seriaiise_handler = php

Функция, используемая для сериализаиии данных. Значение php задает стандартную функцию.

session.gc_prpbability ~ i

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

session.cache_limiter = nocache

Директива, уста на ari и ва ю шая одно из значений кэширования HTTP. Может принимать следующие значения: nocache, private, public.

Более подробно значение этих директив рассмотрено в главе 3.

session.cache_expire = ISO

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

session.use_trans sid = 1

Директива, определяющая, нужно ли использовать поддержку так называемых переходящих SID (идентификаторов сессии). Иначе говоря, необходимо ли поддерживать сессии, если пользователь отключил Cookies в браузере.

Указанная директива работает только а том случае, если РНР был скомпилирован с включенной опцией --enable-trans-sid.

session.hash_?unction = О

Директива, определяющая выбор хеш-функций для сессий. Значение 0 соответствует функции md5, значение I — функции sha-i.

Модуль Assertion

assert.active = On

Директива, определяющая, работает ли функция проверки assert о, выясняющая, не являются ли некоторые утверждения ложными.

assert.warning = On

Директива, определяющая, нужно ли генерировать предупреждения для каждой неудавшейся проверки выражений функцией assert о. assert.bail = Off

Директива, определяющая, следует ли завершать программу (on) или нет (off) в случае неудачного выполнения функции assert (). assert.callback = О

Директива, определяющая пользовательскую функцию, которая будет вызвана при неудавшейся проверке функцией assert о. По умолчанию — значение равно нулю, т. е. пользовательские функции не применяются.

Модуль Verisign Payflow Pro (параметры прокси-сервера)

pfpro.defaulthost = "test.signio.com"

Директива, задающая URL-адрес прокси-сервера.

pfpro.defaultport = 443

Директива задает порт по умолчанию для прокси-сервера.

pfpro.defaulttimeout = 30

Директива задает тайм-аут для прокси-сервера.

pfpro.proxyaddress =

IP-адрес прокси-сервера по умолчанию.

pfpro.proxyport =

Порт прокси-сервера по умолчанию.

pfpro.proxylogon =

Логин для прокси-сервера.

pfpro.proxypassword n

Пароль для прокси-сервера. Модуль Sockets

sockets.use_system_read - On

Директива, разрешающая использование функции read при работе с сокетами.


Автор: Максим кузнецов
 
 
Email:
не зарегистрированы?
Пароль:
забыли?
 
Астраханские магазины