PHP.INI File Configuration: A Beginner's Guide
Здравствуйте, будущие маги PHP! Сегодня мы отправляемся в увлекательное путешествие в мир конфигурации PHP. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода - я буду вашим доброжелательным проводником в этом приключении. К концу этого руководства вы будете настраивать PHP, как профи!
Что такое 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