문제:
직렬화된 문자열에 대해 PHP의 unserialize() 함수를 사용할 때 다음 오류가 발생합니다.
unserialize() [function.unserialize]: Error at offset
원인:
이 오류 이는 일반적으로 직렬화된 문자열의 바이트 수 길이가 잘못되어 잘못된 데이터가 발생하기 때문에 발생합니다.
해결책:
이를 수정하려면 직렬화된 배열의 요소는 다음과 같습니다.
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
향후 문제 예방:
1. 직렬화된 데이터 유효성 검사:
findSerializeError()와 같은 함수를 사용하여 직렬화된 데이터 세그먼트에서 오류를 식별하고 찾습니다.
2. 대체 저장 방법:
보다 안전하고 안정적인 저장을 위해 base64 인코딩 및 디코딩을 사용하여 직렬화된 데이터를 저장하고 검색하는 것을 고려해 보세요. 이렇게 하면 올바른 바이트 및 문자 처리가 보장됩니다.
예:
// Save to database $toDatabase = base64_encode(serialize($data)); // Retrieve from database $fromDatabase = unserialize(base64_decode($data));
추가 팁:
위 내용은 PHP 직렬화 길이 불일치 오류를 복구하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!