PHP 8.5 вводить опцію diff
для прапора php --ini
, що спрощує виявлення змінених значень INI у вашій конфігурації. Використання прапора --ini
дозволяє переглянути завантажений файл конфігурації php.ini та додаткові файли .ini:
$ php --ini
Шлях до конфігураційного файлу (php.ini): "/usr/local/etc/php"
Завантажений конфігураційний файл: "/usr/local/etc/php/php.ini"
Шукати додаткові .ini файли в: "/usr/local/etc/php/conf.d"
Додаткові .ini файли, що були розібрані: /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/zz-app.ini
З початку PHP 8.5 ви можете використовувати diff
для відображення INI значень, що відрізняються від вбудованих за замовчуванням:
$ php --ini=diff
Ненастроєні INI параметри:
allow_url_include: "0" -> ""
auto_append_file: (none) -> ""
auto_prepend_file: (none) -> ""
display_errors: "1" -> ""
display_startup_errors: "1" -> ""
enable_dl: "1" -> ""
error_reporting: (none) -> "22527"
...
3 липня 2025 року PHP випустив першу альфа-версію 8.5. Незважаючи на доступність збірок, найзручніший спосіб експериментувати з PHP 8.5 — використовувати офіційні Docker-контейнери PHP.
Розгляньмо, як протестувати новий прапор php --ini=diff
та інші функції PHP, зокрема Оператор трубопроводу. Щоб слідкувати за інструкцією, створіть нову папку з Dockerfile та кількома прикладними файлами:
mkdir php-85-demo
cd $_
touch Dockerfile
mkdir php/
touch php/app.ini
Перед внесенням змін ми можемо швидко переглянути зміни INI значень в офіційному Docker-образі PHP:
docker run --rm -it php:8.5-rc-alpine sh
# у Docker-контейнері
php --ini=diff
Ненастроєні INI параметри:
html_errors: "1" -> "0"
implicit_flush: "0" -> "1"
max_execution_time: "30" -> "0"
Ми запустили контейнер за допомогою мітки 8.5-rc-alpine
і побачили, що з коробки образ PHP змінює три INI налаштування. Якщо подивитися уважно, образ PHP не завантажує файл INI за замовчуванням, тому він практично на 100% складається з значень за замовчуванням:
$php --ini
Шлях до конфігураційного файлу (php.ini): "/usr/local/etc/php"
Завантажений конфігураційний файл: (none)
...
Зазвичай ви копіюєте готові файли php.ini
, що постачаються з Docker-образом PHP. Давайте використаємо шаблон php.ini для продуктивного середовища, щоб переглянути, які ненастроєні INI значення змінюються при використанні виробничого php.ini:
FROM php:8.5-rc-alpine
RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
COPY php/app.ini $PHP_INI_DIR/conf.d/app.ini
Наш Dockerfile копіює INI файл php.ini-production
у шлях, де PHP очікує файл php.ini
. Далі ми копіюємо прикладний файл app.ini
, що розміщується там, де PHP завантажує додаткові INI файли.
Тепер давайте додамо власне налаштування до файлу php/app.ini
, щоб воно з’явилося у нашому результаті:
memory_limit=512M
Якщо ми зберемо наш образ і запустимо контейнер, ми можемо перевірити, які зміни ми маємо:
$ docker build -t php85-demo .
$ docker run -it --rm php85-demo sh
# всередині Docker-контейнера
$ php --ini=diff
Ненастроєні INI параметри:
allow_url_include: "0" -> ""
auto_append_file: (none) -> ""
auto_prepend_file: (none) -> ""
display_errors: "1" -> ""
display_startup_errors: "1" -> ""
enable_dl: "1" -> ""
error_reporting: (none) -> "22527"
html_errors: "1" -> "0"
ignore_repeated_errors: "0" -> ""
ignore_repeated_source: "0" -> ""
implicit_flush: "0" -> "1"
log_errors: "0" -> "1"
mail.add_x_header: "0" -> ""
mail.mixed_lf_and_crlf: "0" -> ""
max_execution_time: "30" -> "0"
memory_limit: "128M" -> "512M"
mysqlnd.collect_memory_statistics: "0" -> ""
request_order: (none) -> "GP"
session.cookie_httponly: "0" -> ""
session.gc_divisor: "100" -> "1000"
short_open_tag: "1" -> ""
unserialize_callback_func: (none) -> ""
user_dir: (none) -> ""
variables_order: "EGPCS" -> "GPCS"
zend.assertions: "1" -> "-1"
zend.exception_ignore_args: "0" -> "1"
zend.exception_string_param_max_len: "15" -> "0"
zlib.output_compression: "0" -> ""
Файл INI для продуктивного середовища містить кілька змін до значень за замовчуванням. Приємно знати, що ми можемо швидко побачити всі відмінності без необхідності переглядати значення у файлі php.ini