Обновление на 4.2 с 4.1
PHP 5.4+
Laravel 4.2 требует PHP 5.4.0 или выше.
Настройки шифрования
Добавьте новый параметр cipher в свой файл конфигурации app/config/app.php. Значение этого параметра должно быть MCRYPT_RIJNDAEL_256.
confcipher => MCRYPT_RIJNDAEL_256
Этот параметр используется для управления шифром по умолчанию для средств шифрования Laravel.
В Laravel 4.2 шифр по умолчанию — это MCRYPT_RIJNDAEL_128 (AES). Он считается самым безопасным шифром. Необходимо изменение значения шифра назад на MCRYPT_RIJNDAEL_256, чтобы расшифровывать cookies/values, которые были зашифрованы в Laravel 4.1.
Модели безопасного удаления теперь используют типажи
Если вы используете модели безопасного удаления, знайте, что теперь параметр softDeletes удалён. Теперь надо использовать SoftDeletingTrait:
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class User extends Eloquent {
use SoftDeletingTrait;
}
Также надо вручную добавить поле deleted_at в параметр dates:
class User extends Eloquent {
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
}
API для операций безопасного удаления остался прежним.
SoftDeletingTrait не может быть применён на базовую модель. Он должен быть в классе реальной модели.
Переименованы классы View и Pagination
Если вы непосредственно ссылаетесь на класс Illuminate\View\Environment или класс Illuminate\Pagination\Environment, обновите свой код на Illuminate\View\Factory и Illuminate\Pagination\Factory вместо них. Новое название лучше отражает их функции.
Дополнительный параметр в Pagination Presenter
Если вы наследуете класс Illuminate\Pagination\Presenter, то теперь в абстрактный метод PHPgetPageLinkWrapper
добавился параметр rel:
abstract public function getPageLinkWrapper($url, $page, $rel = null);
Шифрование очереди Iron.Io
Если вы используете драйвер очереди Iron.io, вам нужно будет добавить новый параметр encrypt в конфигурационный файл очереди:
conf'encrypt' => true
Обновление до 4.1.29 с 4.1.x
В Laravel 4.1.29 улучшено квотирование столбцов для всех драйверов баз данных. Это защищает ваше приложение от некоторых уязвимостей массового назначения, когда в модели не используется параметр fillable. Если вы используете параметр fillable для защиты от массового назначения, ваше приложение не является уязвимым. Однако, если вы используете guarded и передаёте пользовательские массивы в функции типа «update» или «save», вы должны скорей обновиться до 4.1.29, так как ваше приложение находится под угрозой массового назначения.
Чтобы обновить Laravel до 4.1.29, просто запустите shcomposer update
. В этом релизе нет критических изменений.
Обновление до 4.1.26 с 4.1.25
В Laravel 4.1.26 входят улучшения в области безопасности для cookies «запомнить меня». До этого обновления, если злоумышленник перехватывал cookie «запомнить меня», то этот cookie оставался действующим в течение длительного периода времени, даже после того как настоящий владелец аккаунта изменил свой пароль, вышел из системы и т.д.
Это изменение требует добавления нового столбца remember_token в таблицу базы данных users (или её аналог). После этого изменения новый токен будет присваиваться пользователю каждый раз, когда он подключается к вашему приложению. Токен также будет обновлён, когда пользователь выйдет из приложения. Последствия этого изменения: если cookie «запомнить меня» перехвачен, простой выход из приложения обновит этот cookie.
Обновление Path
Во-первых, добавьте в таблицу users новый, занулённый столбец remember_token типа VARCHAR(100), TEXT, или эквивалентного типа.
Во-вторых, если вы используете драйвер аутентификации Eloquent, добавьте в класс User следующие три метода:
public function getRememberToken()
{
return $this->remember_token;
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName()
{
return 'remember_token';
}
Все существующие сессии «запомнить меня» станут недействительны после этого изменения, так что все пользователи будут вынуждены повторно зайти в ваше приложение.
Создатели пакетов
Два новых метода были добавлены в интерфейс Illuminate\Auth\UserProviderInterface. Примеры реализации можно найти в драйверах по умолчанию:
public function retrieveByToken($identifier, $token);
public function updateRememberToken(UserInterface $user, $token);
Illuminate\Auth\UserInterface также получил три новых метода, описанные выше в разделе «Обновление Path».
Обновление до 4.1 с 4.0
Обновление зависимостей Composer
Чтобы обновить своё приложение Laravel до 4.1, измените версию вашего laravel/framework на 4.1.* в файле composer.json.
Замена файлов
Замените свой файл public/index.php на эту свежую копию из репозитория.
Замените свой файл artisan на эту свежую копию из репозитория.
Добавление файлов конфигурации и параметров
Обновите свои массивы aliases и providers в своём конфигурационном файле app/config/app.php. Обновлённые значения для этих массивов можно найти (https://github.com/laravel/laravel/blob/master/app/config/app.php в этом файле)). Не забудьте заново добавить в массивы свои пользовательские и пакетные поставщики услуг и алиасы.
Добавьте новый файл app/config/remote.php (https://github.com/laravel/laravel/blob/master/app/config/remote.php из репозитория)).
Добавьте новый параметр конфигурации expire_on_close в свой файл app/config/session.php. По умолчанию значение должно быть установлено в false.
Добавьте новую секцию failed в свой файл app/config/queue.php. По умолчанию значения секции должны быть следующими:
conf 'failed' => array( 'database' => 'mysql', 'table' => 'failed_jobs', ),
(Необязательно) Обновите параметр pagination в файле app/config/view.php на pagination::slider-3.
Обновление контроллера
Если app/controllers/BaseController.php содержит use вверху, измените use Illuminate\Routing\Controllers\Controller; на use Illuminate\Routing\Controller;
Обновление сброса паролей
Сброс паролей был перестроен для большей гибкости. Вы можете изучить новый контроллер, выполнив Artisan-команду shphp artisan auth:reminders-controller
(запускайте только после выполнения других изменений ниже). Вы можете также просмотреть обновленную документацию и обновить своё приложение в соответствии с ней.
Обновите свой языковой файл app/lang/en/reminders.php на этот
Обновление обнаружения среды
Из соображений безопасности URL-домены больше не используются для обнаружения среды приложения. Эти значения легко подменить, а это позволит злоумышленникам изменить среду для запроса. Используйте для обнаружения среды имена хостов (команда shhostname
на Mac, Linux и Windows).
Более простые лог-файлы
Laravel теперь генерирует единственный файл журнала: app/storage/logs/laravel.log. Однако вы по-прежнему можете настроить ведение журналов с помощью файла app/start/global.php.
Удаление завершающего слеша для переадресации
В вашем файле bootstrap/start.php удалите вызов PHP$app->redirectIfTrailingSlash()
. Этот метод больше не нужен, так как это функция теперь реализована в файле .htaccess, включенном в фреймворк.
Затем замените файл .htaccess вашего Apache на этот новый файл, который обрабатывает завершающие слешы.
Доступ к текущему маршруту
Текущий маршрут теперь доступен с помощью PHPRoute::current()
вместо PHPRoute::getCurrentRoute()
.
Обновление Composer
Как только вы завершили все перечисленные выше обновления, вы можете выполнить команду shcomposer update
, чтобы обновить файлы ядра приложения! Если у вас появляются ошибки загрузки класса, попытайтесь выполнить команду shupdate
с параметром sh--no-scripts
:
shcomposer update --no-scripts
На Linux вам может потребоваться сделать shsudo composer update
, если вы получаете ошибку доступа.
Слушатели событий по шаблону
Слушатели событий по шаблону теперь не передают события в параметры ваших функций-обработчиков. Если вам надо найти событие, которое было запущено, вы должны использовать PHPEvent::firing()
.