В репозиторий добавлен NGINX 1.11.3 mainline-версии, собранный статически с OpenSSL 1.0.2h.
Ссылки:
Или же воспользуйтесь нашим репозиторием.
В репозиторий добавлен NGINX 1.11.3 mainline-версии, собранный статически с OpenSSL 1.0.2h.
Ссылки:
Или же воспользуйтесь нашим репозиторием.
Этой статье я расскажу о своем опыте миграции с устаревшего mongo PHP extension на mongodb. Расширения имеют абсолютно разный API. Поэтому есть смысл применить для нового более высокоуровневую абстракцию.
Я для этой цели использовал MongoDB PHP Library. У этой библиотеки API достаточно близок к старой версии. В документации есть upgrade guide, но без примеров. При этом есть куча мелких отличий, которые, в свою очередь, чреваты кучей багов. Ниже перечислю основные, из тех с которыми пришлось столкнуться:
Теперь подключение выглядит так:
$client = new \MongoDB\Client( 'mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet', [ 'readPreference' => 'secondaryPreferred' ] );
C аутентификацией (для пароля нужно добавить urlencode):
mongodb://username:[email protected],rs2.example.com/
Если указать реплику и аутентификацию в параметрах (как было раньше) — работать не будет.
Используйте $db->collectionName
вместо new \MongoCollection($db, ‘collectionName’).
\MongoRegex
меняется на \MongoDB\BSON\Regex
и принимает другие параметры на вход.
\MongoId
заменен на \MongoDB\BSON\ObjectID
.
Это наиболее часто используемые классы. Если используется что то еще — ищите аналоги в документации.
Теперь вместо массива будет возвращаться объект \MongoDB\Model\BSONDocument
. На первый взгляд он может работать так же как массив. Но тут нужно быть осторожным. Потому что если в старом коде используется что то типа is_array()
, array_merge()
и т.д., в применении к такому объекту, работать это не будет.
Второй параметр теперь options. Если нужно задать список возвращаемых полей, используйте параметр projection в options:
$collection->find([], [‘projection’ => [‘id’, ‘name’, ‘email’]])
В новой библиотеке нет методов limit()
, offset()
, skip()
, order()
, nextOne()
. Вместо использования методов добавляейте эти параметры в options. Например:
$collection->find([], [ 'skip' => 10, 'limit' => 10, 'sort' => [‘name’ => -1] ]);
*Строка в параметре limit теперь вызовет fatal error.
Так же, теперь нельзя применить метод count к курсору. Можно использовать
$collection->count()
, но не $collection->find()->count()
.
Теперь для этой цели много новых методов. И как с ними работать далеко не всегда очевидно.
Для себя я выбрал три:
updateOne([‘name’ => ‘foo’], [‘$set’ => [‘title’ => ‘test’, ...]])
— если нужно обновить только часть объекта. Переданный параметр ‘_id’ вызовет fatal error.
findOneAndReplace([‘name’ => ‘foo’], $fullObject)
— если нужно переписать объект целиком. ‘_id’ должен быть объектом, не строкой.
updateMany([‘name’ => ‘foo’], [‘$set’ => [‘title’ => ‘test’, ...]])
— работает аналогично с updateOne.
Все эти методы возвращают MongoDB\UpdateResult
, а не обновленный объект, как было раньше.
Некоторые методы были просто переименованы, например remove()
, insertMany()
. Практически во всех методах поменялись возвращаемые параметры.
Insert был заменен на insertOne
и возвращает MongoDB\InsertOneResult
.
Формат результатов в методе aggregate()
был изменен.
Смотрите upgrade guide насчет других изменений.
В репозиторий добавлен Apache httpd 2.4.23 с поддержкой http2 для Red Hat Enterprise Linux и CentOS. Mod_ssl собран статически с OpenSSL 1.0.2h.
Ссылки:
Или же воспользуйтесь нашим репозиторием.
Обращаю ваше внимание на тот факт, что в зависимостях пакета присутствуют apr-util 1.5.0+ и libnghttp, которые я бы рекомендовал взять из репозитория EPEL. Таким образом, для использования Apache HTTPd проще всего подключить репозиторий EPEL:
yum install -y epel-release
В выпуске 2.4.23, в котором представлено 36 изменений, 17 из которых связаны с исправлениями в модуле mod_http2. Выпуски 2.4.21 и 2.4.22 были пропущены, следом за 2.4.20 сразу опубликован релиз 2.4.23.
В новом выпуске устранена уязвимость (CVE-2016-4979), которая позволяет обойти аутентификацию на основе клиентских сертификатов X509. Проблема проявляется только в системах, использующих HTTP/2, и позволяет получить доступ к ресурсам, без предоставления необходимого для аутентификации сертификата. Уязвимы версии httpd c 2.4.18 по 2.4.20 в которых активирован модуль mod_http2.
Из изменений, не связанных с безопасностью и исправлением ошибок, можно отметить реализацию в mod_include конструкции «‹!—#comment текст комментария›» для определения комментариев в файлах SSI, а также добавление новой директивы CGIVar, при помощи которой можно определить правило заполнения переменной окружения REQUEST_URI (original-uri для изначально запрошенного URI и current-uri для текущего URI).
В репозиторий добавлен NGINX 1.11.2 mainline-версии, собранный статически с OpenSSL 1.0.2h.
Ссылки:
Или же воспользуйтесь нашим репозиторием.