mirror of
https://github.com/php/doc-ru.git
synced 2026-04-26 16:58:14 +02:00
293 lines
14 KiB
XML
293 lines
14 KiB
XML
<?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
|
||
-->
|