1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-26 16:58:14 +02:00
Files
archived-doc-ru/reference/mongodb/configure.xml
T
2024-06-05 14:49:57 +03:00

293 lines
14 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
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: e9214a2619efc5906fab59cd42fb7404c4dc49a5 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<article 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>.
Если в системе установлено несколько версий PHP,
дважды проверьте, что вывод функции <function>phpinfo</function> соответствует окружению.
</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>
Если процесс установки не сможет найти библиотеку SSL, убедитесь, что
установлены пакеты для разработки (такие как <literal>libssl-dev</literal>)
и пакет <link xlink:href="&url.mongodb.wiki.pkg-config;">pkg-config</link>.
</para>
<para>
При использовании Homebrew для macOS, обычна ситуация, когда
установлено несколько разных версий OpenSSL. Для использования именно той
версии, которая вам нужна, соответствующим образом установите переменную
окружения <literal>PKG_CONFIG_PATH</literal>. Она будет использоваться
<literal>pkg-config</literal> для определения пути поиска . Если не используется
<literal>pkg-config</literal>, то можно использовать <literal>configure</literal>
с ключом <literal>--with-openssl-dir=DIR</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>
</article>
<!-- 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
-->