Skip to content

Stdlib: max_memory_limit INI missing on PROFILE=8.5 — memory_limit ceiling (main/ini) #23232

Description

@PurHur

Category

stdlib · php-src-strict · PHP 8.5 · INI · pillar 4 correctness

Problem

PHP 8.5 adds INI directive max_memory_limit (INI_SYSTEM, default -1) as a ceiling for memory_limit. Under PHP_COMPILER_PROFILE=8.5, ini_get('max_memory_limit') returns false (unknown directive).

Verified 2026-07-26:

Repro Zend 8.5 VM PROFILE=8.5
ini_get('max_memory_limit') "-1" (string) false

php-src reference

PHP implementation target

  • INI table in PHP (ext/standard / runtime INI helpers already used for memory_limit) — register max_memory_limit when profile ≥ 8.5
  • Enforce ceiling when ini_set('memory_limit', …) would exceed it (warning + clamp), matching Zend
  • PHP-in-PHP; no new runtime/*.c unless an existing thin INI ABI is required

Repro

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
PHP_COMPILER_PROFILE=8.5 php bin/vm.php test/repro/maintainer_gap_max_memory_limit_ini_85.php'

Done when

  • PROFILE=8.5: ini_get('max_memory_limit') returns string (default "-1")
  • Setting memory_limit above the ceiling warns and clamps like Zend (when ceiling ≠ -1)
  • Unknown / absent on profile < 8.5 (ini_get false) — php-src-strict
  • test/repro/maintainer_gap_max_memory_limit_ini_85.php exits 0; compliance .phpt
  • PHP-in-PHP

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vmVirtual machineenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsstdlib

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions