Files
php-doc-ru/reference/mongodb/configure.xml
2024-10-21 21:58:28 +03:00

291 lines
14 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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
-->