<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.pecl.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'install.pecl.windows.php',
    1 => 'Установка PHP-модуля в Windows',
    2 => 'Установка PHP-модуля в Windows',
  ),
  'up' => 
  array (
    0 => 'install.pecl.php',
    1 => 'Установка PECL-модулей',
  ),
  'prev' => 
  array (
    0 => 'install.pecl.downloads.php',
    1 => 'Загрузка модулей PECL',
  ),
  'next' => 
  array (
    0 => 'install.pecl.pear.php',
    1 => 'Компиляция разделяемых модулей командой pecl',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'install/pecl.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.pecl.windows" class="sect1">
  <h2 class="title">Установка PHP-модуля в Windows</h2>
  <p class="para">
   В ОС Windows PHP-модули подключают двумя способами: либо компилируют PHP
   с модулем, либо загружают модуль как DLL-файл. Загрузка заранее
   скомпилированного модуля — самый простой и предпочтительный способ.
  </p>
  <p class="para">
   Модуль загрузится, только если доступен в системе
   как файл с расширением <var class="filename">.dll</var>.
   Группа разработчиков PHP автоматически и периодически компилирует
   PHP-модули. Подробнее о скачивании рассказывает следующий раздел.
  </p>
  <p class="para">
   О компиляции модуля вместе с PHP рассказывает раздел документации
   «<a href="install.windows.building.php" class="link">Сборка из исходного кода</a>».
  </p>
  <p class="para">
   Для компиляции отдельного модуля в виде DLL-файла,
   обратитесь к разделу
   «<a href="install.windows.building.php" class="link">Сборка из исходного кода</a>».
   Возможно, перед подключением модуль потребуется скомпилировать,
   если DLL-файла не оказалось ни в стандартной поставке PHP,
   ни в репозитории PECL.
  </p>

  <div class="sect2" id="install.pecl.windows.find">
   <h3 class="title">Где найти модуль?</h3>
   <p class="para">
    PHP-модулям часто присваивают названия вида <var class="filename">php_*.dll</var>, где звёздочка —
    название модуля, и размещают модули в папке <var class="filename">PHP\ext</var>.
   </p>
   <p class="para">
    PHP поставляется с наиболее полезными для большей части разработчиков модулями.
    Такие модули называются <em>встроенными</em>.
   </p>
   <p class="para">
    На сайте <a href="https://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a> доступны модули, которые решают близкое к 100 % количество задач,
    поэтому хотя бы один необходимый модуль найдётся в репозитории, если встроенные модули не содержат функций, которые потребовались программисту.
    Библиотека модулей PHP-сообщества (англ. The PHP Extension Community Library, PECL) —
    каталогизированный репозиторий PHP-модулей и инфраструктура для хранения, скачивания и разработки модулей.
   </p>
   <p class="para">
    Одни пользователи размещают в репозитории PECL модули, которые разработали для конкретных целей,
    а другие пользователи, которым потребовались аналогичные функции, скачивают модули.
    Разработчики модулей получают шанс на обратную связь,
    благодарности (надеемся, что так и будет), сообщения об ошибках
    и даже исправление ошибок или другие полезные изменения. Примечание <a href="https://pecl.php.net/package-new.php" class="link external">&raquo;&nbsp;на странице отправки нового PECL-модуля</a>
    даёт инструкции, которые потребуется выполнить перед отправкой модуля в репозиторий PECL.
   </p>
  </div>

  <div class="sect2" id="install.pecl.windows.which">
   <h3 class="title">Какой модуль скачать?</h3>
   <p class="para">
    <em>
     DLL-модуль выбирают по следующим признакам:
    </em>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       Номер версий, в котором совпадают хотя бы две первые цифры
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Настройки потокобезопасности
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Архитектура процессора: x86, x64 или другая
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Настройки отладки
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <code class="literal">И другие характеристики</code>
      </span>
     </li>
    </ul>
   </p>
   <p class="para">
    PHP загрузит модуль, только если характеристики модуля
    соответствуют параметрам исполняемого PHP-файла.
    Следующий PHP-скрипт выведет <em>все</em>
    настройки PHP:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Пример #1 
      Вызов функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>
     </strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />phpinfo</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Или запустите из командной строки:
    <div class="example-contents screen">
<div class="cdata"><pre>
drive:\path\to\php\executable\php.exe -i
</pre></div>
    </div>
   </p>
  </div>

  <div class="sect2" id="install.pecl.windows.loading">
   <h3 class="title">Загрузка модуля</h3>
   <p class="para">
    Самый распространённый способ загрузить PHP-модуль —
    включить модуль в конфигурационном файле <var class="filename">php.ini</var>.
    Обратите внимание, файл <var class="filename">php.ini</var> уже содержит записи для части модулей,
    и для активации достаточно удалить точку с запятой.
   </p>
   <p class="para">
    Обратите внимание, начиная с PHP 7.2.0 вместо названия файла модуля
    возможно указать только название модуля. Такой способ становится рекомендованным
    для определения списка загружаемых модулей, поскольку это самый простой и платформонезависимый способ.
    Поддержка названий файлов всё ещё сохраняется для совместимости с предыдущими версиями.
   </p>
   <div class="example-contents screen">
<div class="cdata"><pre>
;extension=php_extname.dll
</pre></div>
   </div>
   <div class="example-contents screen">
<div class="cdata"><pre>
extension=php_extname.dll
</pre></div>
   </div>
   <div class="example-contents screen">
<div class="cdata"><pre>
; Начиная с PHP 7.2 лучше делать так:
extension=extname
zend_extension=another_extension
</pre></div>
   </div>
   <p class="para">
    Однако некоторые веб-серверы создают путаницу, поскольку
    не используют файл <var class="filename">php.ini</var>, который содержится в дистрибутиве PHP.
    Путь расположения файла <var class="filename">php.ini</var>
    указывается в выводе функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>:
   </p>
   <div class="example-contents screen">
<div class="cdata"><pre>
Configuration File (php.ini) Path  C:\WINDOWS
</pre></div>
   </div>
   <div class="example-contents screen">
<div class="cdata"><pre>
Loaded Configuration File   C:\Program Files\PHP\8.2\php.ini
</pre></div>
   </div>
   <p class="para">
    После активации модуля сохраняют файл <var class="filename">php.ini</var>, перезагружают веб-сервер
    и повторно проверяют вывод функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
    Для нового модуля появится отдельный раздел.
   </p>
  </div>

  <div class="sect2" id="install.pecl.windows.problemsolving">
   <h3 class="title">Решение проблем</h3>
   <p class="para">
    Лог-файлы помогают узнать причину ошибки,
    когда модуль не появляется в выводе функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
   </p>
   <p class="para">
    При работе с PHP из командной строки, в режиме CLI,
    сообщение об ошибке загрузки модуля появится на экране.
   </p>
   <p class="para">
    При работе PHP с веб-сервером расположение и формат логов определяет ПО сервера.
    Для поиска путей к журналам знакомятся с документацией к веб-серверу,
    поскольку сам PHP не устанавливает место хранения серверных логов.
   </p>
   <p class="para">
    Часто проблемы возникают из-за неправильного расположения DLL-модуля и DLL-файлов, от которых зависит модуль,
    неправильного значения директивы &quot;<a href="ini.core.php#ini.extension-dir" class="link">extension_dir</a>&quot; в файле <var class="filename">php.ini</var>
    и из-за несовпадения настроек компиляции.
   </p>
   <p class="para">
    Вероятная причина проблемы, которая возникает из-за несовпадения настроек компиляции,
    состоит в скачивании неправильного DLL-файла. Попробуйте скачать
    модуль снова с правильными настройками. И снова в таких ситуациях
    помогает информация, которую выводит функция <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
   </p>
  </div>

 </div><?php manual_footer($setup); ?>