mirror of
https://github.com/php/doc-ru.git
synced 2025-08-20 23:31:15 +00:00
291 lines
14 KiB
XML
291 lines
14 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 3e871fe7eab38f9b0398569c57a1dd0c21e69652 Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<section xml:id="mongodb.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
&reftitle.install;
|
||
|
||
<section xml:id="mongodb.installation.pecl">
|
||
<title>Установка PHP-модуля MongoDB через репозиторий PECL</title>
|
||
|
||
<para>
|
||
&pecl.info;
|
||
<link xlink:href="&url.pecl.package;mongodb">&url.pecl.package;mongodb</link>
|
||
</para>
|
||
|
||
<para>
|
||
Пользователи Linux, Unix и macOS запускают следующую команду для установки модуля:
|
||
<programlisting role="shell">
|
||
<![CDATA[
|
||
$ sudo pecl install mongodb
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
На системах с несколькими установленными версиями PHP (например для macOS:
|
||
установка по умолчанию, Homebrew
|
||
и <link xlink:href="&url.xampp;">XAMPP</link>) у каждой версии PHP
|
||
будет своя команда <link linkend="install.pecl">pecl</link>
|
||
и файл (или файлы) &php.ini;. Кроме того, каждому PHP-окружению наподобие CLI или web
|
||
разрешается использовать отдельные файлы &php.ini;.
|
||
</para>
|
||
|
||
<para>
|
||
Начиная с версии модуля 1.17.0 PECL будет запрашивать разные
|
||
настройки <literal>configure</literal>. Чтобы установить модуль с параметрами
|
||
по умолчанию в неинтерактивном скрипте, команду <literal>yes</literal> с вводом пустой строки
|
||
присоединяют через символ вертикальной черты к команде
|
||
<literal>pecl install</literal>:
|
||
<programlisting role="shell">
|
||
<![CDATA[
|
||
$ yes '' | sudo pecl install mongodb
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Полный список поддерживаемых параметров <literal>configure</literal>
|
||
доступен в файле <literal>package.xml</literal>, который включили в пакет PECL.
|
||
Чтобы установить модуль со специфичными параметрами <literal>configure</literal>
|
||
в неинтерактивном сценарии, указывают параметр
|
||
<literal>--configureoptions</literal>
|
||
для команды <literal>pecl install</literal>:
|
||
<programlisting role="shell">
|
||
<![CDATA[
|
||
$ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
По умолчанию установка модуля через PECL использует
|
||
встроенные версии модулей:
|
||
<link xlink:href="&url.mongodb.libbson;">libbson</link>,
|
||
<link xlink:href="&url.mongodb.libmongoc;">libmongoc</link>,
|
||
<link xlink:href="&url.mongodb.libmongocrypt;">libmongocrypt</link>
|
||
и попытается сконфигурировать их автоматически.
|
||
</para>
|
||
|
||
<note>
|
||
<simpara>
|
||
Когда процесс установки не находит библиотеку SSL, проверяют,
|
||
что установили пакеты для разработки наподобие <literal>libssl-dev</literal>
|
||
и пакет <link xlink:href="&url.mongodb.wiki.pkg-config;">pkg-config</link>.
|
||
Проводят <link linkend="mongodb.installation.manual">ручную установку</link>,
|
||
если это не помогает.
|
||
</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
И наконец, добавляют следующую строку в файл &php.ini; для каждого окружения,
|
||
в котором будет работать модуль:
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
extension=mongodb.so
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
</section>
|
||
|
||
<section xml:id="mongodb.installation.homebrew">
|
||
<title>Установка PHP-модуля MongoDB в операционную систему macOS через менеджер пакетов Homebrew</title>
|
||
|
||
<para>
|
||
Начиная с <link xlink:href="https://brew.sh/2018/01/19/homebrew-1.5.0/">Homebrew 1.5.0</link>
|
||
пакет <link xlink:href="&url.mac.homebrew;">Homebrew/php tap</link>
|
||
объявили устаревшим, а формулы для отдельных модулей PHP удалили.
|
||
Пользователям macOS рекомендуют устанавливать драйвер через
|
||
формулу <link xlink:href="https://formulae.brew.sh/formula/php">php</link>
|
||
и запускать предоставленную PHP, установленным через менеджер пакетов Homebrew,
|
||
команду <link linkend="install.pecl">pecl</link>, как рассказывает
|
||
стандартная <link linkend="mongodb.installation.pecl">инструкция по установке из репозитория PECL</link>.
|
||
</para>
|
||
</section>
|
||
|
||
<section xml:id="mongodb.installation.windows">
|
||
<title>Установка PHP-модуля MongoDB в операционную систему Windows</title>
|
||
|
||
<para>
|
||
Предварительно скомпилированные исполняемые файлы прикрепляются
|
||
к <link xlink:href="&url.mongodb.github.new;/releases/">выпускам проекта на GitHub</link>.
|
||
Архивы публикуются для разных комбинаций версии PHP, потоковой безопасности (TS или NTS)
|
||
и архитектуры (x86 или x64). Определите правильный архив для PHP-окружения
|
||
и извлеките файл <filename>php_mongodb.dll</filename> в директорию с модулями (по умолчанию "ext").
|
||
</para>
|
||
|
||
<para>
|
||
Добавьте следующую строку в файл &php.ini; для каждого окружения,
|
||
в котором будет работать модуль:
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
extension=php_mongo.dll
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Неправильный выбор двоичного файла вызовет ошибку
|
||
при попытке загрузить DLL-модуль во время выполнения:
|
||
<programlisting role="txt">
|
||
<![CDATA[
|
||
PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb'
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Убедитесь, что DLL-файл, который скачали, соответствует следующим свойствам среды выполнения PHP:
|
||
<simplelist>
|
||
<member>Версия PHP (<constant>PHP_VERSION</constant>)</member>
|
||
<member>Потоковая безопасность (<constant>PHP_ZTS</constant>)</member>
|
||
<member>Архитектура (<constant>PHP_INT_SIZE</constant>)</member>
|
||
</simplelist>
|
||
</para>
|
||
|
||
<para>
|
||
Просмотр этих свойств доступен в выводе функции <function>phpinfo</function>.
|
||
Дважды проверьте, что вывод функции <function>phpinfo</function> соответствует окружению,
|
||
если в систему установили несколько версий PHP.
|
||
</para>
|
||
|
||
<note>
|
||
<title>Дополнительные DLL-зависимости для пользователей Windows</title>
|
||
<para>
|
||
&ext.windows.path.dll;
|
||
<filename>libsasl.dll</filename>
|
||
</para>
|
||
</note>
|
||
</section>
|
||
|
||
<section xml:id="mongodb.installation.manual">
|
||
<title>Сборка PHP-драйвера MongoDB из исходного кода</title>
|
||
|
||
<para>
|
||
Разработчики и пользователи, которые заинтересованы в последних исправлениях ошибок,
|
||
компилируют модуль из последнего исходного кода
|
||
<link xlink:href="&url.mongodb.github.new;">на сайте GitHub</link>. Запустите следующие
|
||
команды, чтобы клонировать и собрать проект:
|
||
<programlisting role="shell">
|
||
<![CDATA[
|
||
$ git clone https://github.com/mongodb/mongo-php-driver.git
|
||
$ cd mongo-php-driver
|
||
$ git submodule update --init
|
||
$ phpize
|
||
$ ./configure
|
||
$ make all
|
||
$ sudo make install
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
<para>
|
||
В системах с несколькими установленными версиями PHP (например, macOS: установка по умолчанию,
|
||
Homebrew, <link xlink:href="&url.xampp;">XAMPP</link>)
|
||
у каждой версии PHP будет своя команда <link linkend="install.pecl.phpize">phpize</link>
|
||
и файл (или файлы) &php.ini;.
|
||
Кроме того, каждое окружение PHP (например, CLI, web) может использовать отдельные файлы &php.ini;.
|
||
</para>
|
||
|
||
<para>
|
||
По умолчанию модуль использует встроенные версии библиотек
|
||
<link xlink:href="&url.mongodb.libbson;">libbson</link>,
|
||
<link xlink:href="&url.mongodb.libmongoc;">libmongoc</link>
|
||
и <link xlink:href="&url.mongodb.libmongocrypt;">libmongocrypt</link>
|
||
и попытается настроить библиотеки автоматически. Библиотеки доступны модулю через передачу
|
||
параметра <literal>--with-mongodb-system-libs=yes</literal>
|
||
команде <literal>configure</literal>,
|
||
если эти библиотеки уже установили в систему.
|
||
</para>
|
||
<para>
|
||
Полный список параметров команды <literal>configure</literal> получают
|
||
через запуск команды: <command>configure --help</command>.
|
||
</para>
|
||
|
||
<para>
|
||
При работе со встроенными версиями библиотек libmongoc и libmongocrypt,
|
||
модуль также попытается выбрать SSL-библиотеку
|
||
в соответствии с параметром
|
||
<literal>--with-mongodb-ssl</literal> команды <literal>configure</literal>.
|
||
Начиная с версии модуля 1.17.0 по умолчанию предпочтение отдаётся библиотеке OpenSSL.
|
||
Предыдущие версии драйвера на системах с macOS по умолчанию выбирали Secure Transport,
|
||
а на остальных платформах — OpenSSL.
|
||
</para>
|
||
|
||
<note>
|
||
<para>
|
||
Потребуется проверить, установили ли пакеты для разработки наподобие <literal>libssl-dev</literal>
|
||
и пакет <link xlink:href="&url.mongodb.wiki.pkg-config;">pkg-config</link>,
|
||
если процесс установки не найдёт SSL-библиотеку.
|
||
</para>
|
||
|
||
<para>
|
||
Система часто содержит набор версий библиотеки OpenSSL, когда
|
||
пакетами на macOS управляют через утилиту Homebrew.
|
||
Дополнительный путь, по которому программа <literal>pkg-config</literal>
|
||
будет искать файлы, указывают в переменной среды <literal>PKG_CONFIG_PATH</literal>,
|
||
чтобы выбрать правильную версию библиотеки OpenSSL.
|
||
</para>
|
||
</note>
|
||
|
||
<para>
|
||
На последнем, финальном шаге, команда <command>make install</command>
|
||
выведет путь, по которому собрали модуль
|
||
<filename>mongodb.so</filename>. Например, вот так:
|
||
<programlisting role="txt">
|
||
<![CDATA[
|
||
Installing shared extensions: /usr/lib/php/extensions/debug-non-zts-20220829/
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Убедитесь, что директива <link linkend="ini.extension-dir">extension_dir</link> файла
|
||
&php.ini; указывает на каталог, в котором лежит модуль <filename>mongodb.so</filename>.
|
||
Значение директивы проверяют вот так:
|
||
<programlisting role="shell">
|
||
<![CDATA[
|
||
$ php -i | grep extension_dir
|
||
extension_dir => /usr/lib/php/extensions/debug-non-zts-20220829 =>
|
||
/usr/lib/php/extensions/debug-non-zts-20220829
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
|
||
<para>
|
||
Значение директивы <link linkend="ini.extension-dir">extension_dir</link> изменяют
|
||
в файле &php.ini; или просто перемещают файл <filename>mongodb.so</filename> в правильную директорию,
|
||
если директории отличаются.
|
||
</para>
|
||
|
||
<para>
|
||
И наконец, добавьте следующую строку в файл &php.ini; для каждого окружения,
|
||
в котором планируется использовать модуль:
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
extension=mongodb.so
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
</section>
|
||
|
||
</section>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|