Php ini set enable function

ini_set

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

Список параметров

Не все доступные настройки можно изменять функцией ini_set() . Список доступных настроек приведён в приложении.

Возвращаемые значения

В случае успешного выполнения возвращает старое значение или false в случае возникновения ошибки.

Список изменений

Версия Описание
8.1.0 Параметр value теперь принимает любой скалярный тип (включая null ). Ранее допускались только строковые ( string ) значения.

Примеры

Пример #1 Установка значения ini-настройки

if (! ini_get ( ‘display_errors’ )) ini_set ( ‘display_errors’ , ‘1’ );
>

echo ini_get ( ‘display_errors’ );
?>

Смотрите также

  • get_cfg_var() — Извлекает значение настройки конфигурации PHP
  • ini_get() — Получает значение настройки конфигурации
  • ini_get_all() — Получает все настройки конфигурации
  • ini_restore() — Восстанавливает значение настройки конфигурации
  • Как изменить настройки конфигурации

User Contributed Notes 20 notes

I have experienced on some systems that ini_set() will fail and return a false, when trying to set a setting that was set inside php.ini inside a per-host setting. Beware of this.

[[[Editors note: Yes, this is very true. Same with
register_globals, magic_quotes_gpc and others.
]]]

Many settings, although they do get set, have no influence in your script. like upload_max_filesize will get set but uploaded files are already passed to your PHP script before the settings are changed.

Also other settings, set by ini_set(), may be to late because of this (post_max_size etc.).
beware, try settings thru php.ini or .htaccess.

When checking for the success of ini_set(), keep in mind that it will return the OLD value upon success — which may have been «0». Therefore you cannot just compare the return value — you have to check for «identity»:

// This will NOT determine the success of ini_set(), instead
// it only tests if the old value had been equivalent to false
if ( ! ini_set ( ‘display_errors’ , ‘1’ ) )
throw new \ Exception ( ‘Unable to set display_errors.’ );

// This is the CORRECT way to determine success
if ( ini_set ( ‘display_errors’ , ‘1’ ) === false )
throw new \ Exception ( ‘Unable to set display_errors.’ );

?>

This explains reported situations where ini_set() «always» seems to fail!

set PHP_INI_PERDIR settings in a .htaccess file with ‘php_flag’ like this:

php_flag register_globals off
php_flag magic_quotes_gpc on

When your ISP does not allow you to add the default include directories — it might be useful to extend the ‘include_path’ variable:

If it’s not your server and therefore you want to hide the data in your session variables from other users, it�s very useful to set the session.save_handler in your scripts to shared memory with:

Remember: You have to set it in every script that uses the session variables BEFORE «session_start()» or php won’t find them.

Читайте также:  Название Вашей первой странички

Be careful with setting an output_handler, as you can’t use ini_set() to change it. *sigh*

In my php.ini I have this for my web pages (and I want it):

But this causes my command line scripts to not show output until the very end.

#!/usr/bin/php -q
ini_set ( ‘output_handler’ , ‘mb_output_handler’ );
echo «\noutput_handler => » . ini_get ( ‘output_handler’ ) . «\n» ;
?>

root@# ./myscript.php
output_handler => ob_gzhandler

Apparently (acording to Richard Lynch):

> TOO LATE!
> The ob_start() has already kicked in by this point.
> ob_flush() until there are no more buffers.

While this doesn’t belong in the manual, it should be useful for people looking on this page for zend_optimizer.* ini options, which are commonly installed:

Information on the «zend_optimizer.optimization_level» and «zend_optimizer.enable_loader» options is available at:

Careful — in some cases, when setting zlib.output_compression to «On» via ini_set, PHP won’t send the Content-type header and browsers will garble the output. Set it to the desired buffer size instead, which sends the correct header:

ini_set ( «zlib.output_compression» , 4096 );
?>

[[[Editors note: Just because you’re able to set something
doesn’t mean it will work as expected. Depends on the
setting. For example. setting register_globals at
runtime will be of little use as its job has already
been completed by the time it reaches your script.
]]]

When a setting can not be changed in a user script, the return value of ini_set is «empty», not «false» as you may expect.
If you check in your script for return value is «false» the script will continue processing, although the setting has not been set.
The boolean return value is used for settings that can be changed in a script. Otherwise the empty value is returned.
To test for both error conditions use:

if (empty( $blnResult ) or (! $blnResult )) <
echo «setting cannot be set» ;
exit;
>
?>

if u receive an Error with generic like :
Maximum execution time of 30 seconds exceeded

if u set ini_set(max_execution_time, 300);
your problem will be solved
pls note that the 300 , is 300 seconds , which means 5 minute you can set another value !

Источник

Настройка файла php.ini

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

Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.

Читайте также:  Css input not visible

Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.

Расположение и синтаксис php.ini

Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:

php

Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки — apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.

Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл php.ini.

Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:

имя_настройки = значение_параметра

Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.

Настройка файла php.ini

Для удобства ориентирования мы разобьем все параметры по категориях в зависимости от их назначения. Вам будет достаточно найти нужный параметр и изменить его значение. А теперь откройте файл настроек php, например, для модуля apache и перейдем к настройке. Чтобы избежать ошибок не добавляйте новые строки, а ищите уже существующие и изменяйте значения на нужные:

sudo gedit /etc/php5/apache/php.ini

php1

Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.

Вывод ошибок в php

Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:

php3

Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:

error_reporting = E_ALL & ~E_DEPRECATED

Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак ~. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:

Включите запись ошибок php в лог файл, если не выводите их на экран:

Читайте также:  Python linux which command

Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:

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

php6

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

По умолчанию максимальное время выполнения скрипта — 30 секунд, сделаем минуту:

Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:

Максимальное количество переменных в GET и POST:

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

Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию — 8 Мегабайт:

Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:

С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:

Директории по умолчанию

php4

Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:

Папка для записи временных файлов:

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

php5

Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:

Максимальный размер загружаемого файла:

Максимальное количество файлов, которые может загрузить один скрипт:

Настройка php.ini практически завершена, нам остались лишь расширения.

Настройка расширений

Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.

Для включения расширения достаточно убрать комментарий перед строкой с его командой, например:

extension=php_mysql.so
extension=php_mbstring.so
extension=php_pgsql.so

php2

Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.

Выводы

В этой статье мы рассмотрели как выполняется настройка php на сервере или обычном компьютере для разработки веб-сайтов. Файл настроек php имеет довольно простую структуру и с ним довольно не сложно справиться. После завершения всех настроек и сохранения изменений не забудьте перезагрузить веб-сервер или сервис php-fpm.

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

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