PHP.INI File Configuration: A Beginner's Guide

Здравствуйте, будущие маги PHP! Сегодня мы отправляемся в увлекательное путешествие в мир конфигурации PHP. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода - я буду вашим доброжелательным проводником в этом приключении. К концу этого руководства вы будете настраивать PHP, как профи!

PHP.INI File Configuration

Что такое PHP.INI?

Прежде чем мы углубимся, давайте поговорим о том, что такое PHP.INI на самом деле. Представьте, что вы настраиваете новый смартфон. Вы, вероятно, хотели бы изменить некоторые настройки, чтобы он работал так, как вам нравится, не так ли? Так вот, PHP.INI - это как меню настроек для PHP. Это конфигурационный файл, который tells PHP, как себя вести.

Загруженный конфигурационный файл

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

<?php
phpinfo();
?>

Сохраните это как PHP-файл (например, info.php) и запустите его в вашем веб-браузере. Найдите запись "Loaded Configuration File". Это ваш активный файл PHP.INI!

Общие настройки PHP.INI

Теперь давайте рассмотрим некоторые из самых важных настроек в PHP.INI. Я объясню, что делает каждая из них, и даду примеры их использования.

short_open_tag = Off

Эта настройка определяет, следует ли PHP разрешать короткую форму открывающего тега PHP (<?). Когда она отключена, вам необходимо использовать полный открывающий тег PHP (<?php).

<?php
echo "Hello, World!";
?>

С short_open_tag = On вы могли бы написать:

<? echo "Hello, World!"; ?>

Но обычно рекомендуется держать ее отключенной для лучшей совместимости.

safe_mode = Off

Безопасный режим был функцией безопасности в старых версиях PHP. Теперь он устарел и удален в PHP 5.4.0 и новее. Если вы используете современную версию PHP, вы не увидите эту настройку.

disable_functions = [function1, function2...]

Это мощная функция безопасности. Она позволяет вам отключить конкретные функции PHP, которые вы считаете рискованными. Например:

disable_functions = exec,passthru,shell_exec,system

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

max_execution_time = 30

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

<?php
// Этот скрипт будет работать не более 30 секунд
for ($i = 0; $i < 1000000; $i++) {
echo $i . "<br>";
}
?>

error_reporting = E_ALL & ~E_NOTICE

Эта настройка контролирует, какие ошибки сообщаются. E_ALL означает сообщение об всех ошибках, а ~E_NOTICE означает, кроме уведомлений.

<?php
// С E_ALL & ~E_NOTICE, это не покажет ошибку
echo $undefinedVariable;
?>

register_globals = Off

Эта функция старая и небезопасная. Она была объявлена устаревшей и удалена в PHP 5.4.0. Всегда держите ее отключенной в старых версиях.

magic_quotes_gpc = On

Эта настройка автоматически экранирует входные данные, делая их безопасными от SQL-инъекций. Однако она также устарела и удалена в PHP 5.4.0. В modern PHP вы должны использовать подготовленные запросы вместо этого.

file_uploads = [on/off]

Эта настройка контролирует, разрешены ли загрузки файлов.

<?php
if ($_FILES) {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed.\n";
}
}
?>

session.save-handler = files

Эта настройка определяет, как хранятся данные сессии. По умолчанию это 'files', что означает, что данные сессии хранятся в файлах на сервере.

<?php
session_start();
$_SESSION['user'] = 'John Doe';
echo "Session data saved!";
?>

ignore_user_abort = [On/Off]

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

<?php
ignore_user_abort(true);
set_time_limit(0);

// Этот скрипт将继续 работать даже если пользователь закроет браузер
while (true) {
file_put_contents('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
sleep(1);
}
?>

Настройки MySQL

PHP.INI также включает настройки для подключений к MySQL:

Настройка Описание Пример
mysql.default_host Указывающий MySQL сервер mysql.default_host = localhost
mysql.default_user Указывающий MySQL пользователь mysql.default_user = root
mysql.default_password Указывающий MySQL пароль mysql.default_password = password123

Помните, обычно лучше устанавливать эти значения в вашем скрипте, а не в PHP.INI, из соображений безопасности.

<?php
$conn = mysqli_connect('localhost', 'root', 'password123');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

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

Счастливого кодирования, и пусть ваши PHP-скрипты всегда работают без сбоев!

Credits: Image by storyset