srand (seed) производит разные значения на разных серверах

Функция, которую мой сайт использует для данных cookie для кодирования / декодирования, использует rand (). Это не идеальный метод вообще, но это функция шифрования по умолчанию в CakePHP 1.2, поэтому я застрял на ней, пока не хочу аннулировать все файлы cookie моего пользователя (и я действительно не сейчас).

Проблема в том, что я перемещаю сайт на другой сервер, и новый сервер не может декодировать файлы cookie, установленные старым сервером, потому что rand () создает разные значения, даже если оба сервера используют srand (seed) с тем же семенем. Я предполагаю, что проблема заключается в том, что два сервера используют разные внутренние php-функции для генерации случайных чисел, как указано в этой ошибке cakephp относительно функции шифрования: http://cakephp.lighthouseapp.com/projects/42648/tickets/1524- securitycipher-это-зависит от платформы

Мне интересно, как я могу изменить функцию шифрования на новом сервере, чтобы иметь возможность правильно декодировать файлы cookie, установленные старым сервером. Любой способ заставить php использовать одну и ту же внутреннюю случайную функцию или что-то еще?

Я склонен думать, что это может быть желаемое поведение. Так говорит http://php.net/manual/en/function.mt-srand.php (я знаю, что ваш srand не mt_srand, но все же):

Идентичные семена больше не производят одну и ту же последовательность значений, которые они делали в предыдущих версиях. Такое поведение, как ожидается, не изменится снова, но считается небезопасным полагаться на него, тем не менее.

У меня была одна и та же проблема, здесь я связываю свое решение , я знаю, что это очень старый вопрос, но надеется, что кто-то найдет решение в будущем. Как сказал первый ответ @chx, все было связано с изменением с srand () на mt_srand ().