Skip to content

Unable to serialize processed SplFixedArrays in PHP 8.2.4 #10907

Closed
@codex-m

Description

@codex-m

Description

The following code:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$array = new SplFixedArray(5);

$array[1] = 2;
$array[2] = "test value";
$copy = $array;
$serialized_one = serialize($array);
$object_vars = get_object_vars($array);
foreach ($object_vars as $property_name => $property_value) {    
    $copy[$property_name] = $property_value;
}
$serialized_two = '';
if ($copy === $array) {
    $serialized_two = serialize($copy);
}

if ($serialized_one === $serialized_two) {
    echo "PHP version " . phpversion() . " is ok";
}

Resulted in this output:

500 internal server error or no output

But I expected this output instead:

PHP version 8.2.4 is ok

Notes:

  • The above test code works in all commonly active versions: PHP 8.1, PHP 8.0 and PHP 7.4. However the above code does not work only in PHP 8.2.4.
  • Originally reproduced with Ubuntu 20.04 + PHP 8.2.4.
  • This is also reproducible in PHP Windows environment using PHP 8.2.4 .

I've check the upgrade notes on PHP 8.2.4. There is nothing that mention between serialize() and SplFixedArray. I'm still learning more about PHP 8.2, so please help me confirm if this is a bug or simply a usage issue. Thank you!

PHP Version

PHP 8.2.4

Operating System

Ubuntu 20.04 / Windows 10

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions