
unserialize_max_depth는 serialize/unserialize 함수에서 객체의 깊이 제한을 설정하는 옵션입니다. 기본적으로 serialize/unserialize 함수는 객체의 깊이 제한이 없기 때문에, 무한 루프를 발생시키는 객체를 serialize/ unserialize 할 때 문제가 발생할 수 있습니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
php
class A {
public $b;
function __construct() {
$this->b = new B();
}
}
class B {
public $c;
function __construct() {
$this->c = new C();
}
}
class C {
function __construct() {
// 아무런 코드도 없습니다.
}
}
$a = new A();
$serialized = serialize($a);
$unserialized = unserialize($serialized);
이 코드를 실행하면, 무한 루프를 발생시키는 객체를 serialize/unserialize 할 때 문제가 발생할 수 있습니다. 이 때, unserialize_max_depth 옵션을 사용하여 객체의 깊이 제한을 설정할 수 있습니다.
#hostingforum.kr
php
$unserialized = unserialize($serialized, ['unserialize_max_depth' => 3]);
위 코드에서, unserialize_max_depth 옵션을 3으로 설정하여 객체의 깊이 제한을 3으로 설정합니다. 이 때, 객체의 깊이가 3을 초과하는 경우, serialize/unserialize 함수는 객체를 무시하고, 객체의 깊이 제한을 초과하는 부분을 삭제합니다.
2025-05-08 05:51