<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration71.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'migration71.windows-support.php',
    1 => 'Поддержка Windows',
    2 => 'Поддержка Windows',
  ),
  'up' => 
  array (
    0 => 'migration71.php',
    1 => 'Миграция с PHP 7.0.x на PHP 7.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration71.other-changes.php',
    1 => 'Другие изменения',
  ),
  'next' => 
  array (
    0 => 'migration70.php',
    1 => 'Миграция с PHP 5.6.x на PHP 7.0.x',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'appendices/migration71/windows-support.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration71.windows-support" class="sect1">
 <h2 class="title">Поддержка Windows</h2>
 <div class="sect2" id="migration71.windows-support.long-and-utf8-path">
  <h3 class="title">Поддержка длинных и UTF-8 путей</h3>
  <p class="para">
   Если веб-приложение работает с UTF-8, то никаких дополнительных действий не требуется.
   Для приложений осуществляющих ввод/вывод по путям, заданных в кодировке
   отличной от UTF-8, необходимо явно задать значения в INI-файле. Проверка кодировок
   осуществляется в следующем порядке:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     internal_encoding
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     default_charset
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     zend.multibyte
    </span>
   </li>
  </ul>
  <p class="para">
   Было введено несколько функций для обработки кодовых страниц:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     sapi_windows_cp_set() для установки кодировки по умолчанию
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     sapi_windows_cp_get() для получения текущей кодировки
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     sapi_windows_cp_is_utf8()
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     sapi_windows_cp_conv() для конвертации между кодировками с использованием сигнатур
     аналогичным iconv()
    </span>
   </li>
  </ul>
  <p class="para">
   Эти функции потокобезопасны.
  </p>
  <p class="para">
   Кодовая страница, используемая для вывода в консоли настраивается в зависимости от кодировки,
   используемой в PHP. В зависимости от конкретной системной OEM-кодировки, видимый
   результат может быть корректным или нет. Например, в стандартной консоли cmd.exe в
   системах с кодировкой 437 OEM-вывод в кодировках 1251, 1252, 1253 и некоторых других
   может отображаться правильно при использовании UTF-8. В тех же самых системах
   символы в кодировке типа 20932 будут показаны некорректно. Это относится к конкретным
   системным правилам для кодовой страницы, совместимости шрифтов и конкретной
   используемой консоли. PHP автоматически устанавливает кодовую страницу консоли в
   соответствии с правилами кодирования из php.ini. В некоторых случаях использование
   консоли отличной от стандартной cmd.exe может улучшить ситуацию.
  </p>
  <p class="para">
   Не забывайте, что переключение кодовой страницы во время исполнения после
   запуска скрипта может привести к неожиданным побочным эффектам в CLI.
   Лучший вариант - использовать php.ini. При использовании PHP CLI в эмуляторе
   консоли, который не поддерживает Unicode, это может потребоваться во избежание
   изменения кодировки консоли. Лучший вариант - установить кодировку по умолчанию
   или внутреннюю кодировку как ANSI. Также можно установить директивы
   output_encoding и input_encoding в требуемые значения, но следует помнить, что
   при отличии внутренней кодировки и кодировки вводы/вывода вы, скорее всего,
   получите кракозябры. В редких случаях при падении PHP, кодировка консоли может не
   восстанавливаться в изначальное значение. В таком случае восстановите её самостоятельно
   с помощью команды chcp.
  </p>
  <p class="para">
   Особое замечание для систем DBCS - переключение кодировки во время исполнения
   с помощью <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> может вызвать проблемы с отображением.
   Разница с системами без DBCS заключается в том, что расширенные символы требуют двух
   ячеек консоли для отображения. В некоторых случаях может произойти только
   отображение символов в глифы текущего шрифта, без его смены. Это в характере
   систем DBCS. Самый простой способ избежать проблем с отображением - отказаться
   от использования <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> для изменения кодовой страницы.
  </p>
  <p class="para">
   В результате поддержки UTF-8 в потоках, скрипты PHP больше не ограничены
   кодировками ASCII и ANSI для имён файлов. Такая поддержка доступна из коробки
   CLI. Для других SAPI следует изучить соответствующую документацию.
  </p>
  <p class="para">
   Длинные пути поддерживаются прозрачно. Пути длиннее 260 байт автоматически
   дополняются префиксом <code class="literal">\\?\</code>. Максимальная длина пути ограничена
   2048 байтами. Имейте в виду, что ограничения на длину сегмента пути (длину базового
   имени) по-прежнему сохраняются.
  </p>
  <p class="para">
   Для лучшей переносимости настоятельно рекомендуется обрабатывать имена файлов,
   ввод/вывод и прочие, связанные с UTF-8 сущности. Кроме того, для
   консольных приложений рекомендуется использовать шрифты TrueType и не
   рекомендуется менять кодировку с помощью ini_set().
  </p>
  <p class="para">
  </p>
  <p class="para">
  </p>
 </div>
 <div class="sect2" id="migration71.windows-support.readline">
  <h3 class="title">readline</h3>

  <p class="para">
   Модуль <a href="book.readline.php" class="link">readline</a> поддерживается через библиотеку
   <a href="http://mingweditline.sourceforge.net/" class="link external">&raquo;&nbsp;WinEditLine</a>. Таким образом интерфейс оболочки
   <abbr title="Command Line Interpreter/Interface">CLI</abbr> также поддерживается (<code class="literal">php.exe -a</code>).
  </p>
 </div>

 <div class="sect2" id="migration71.windows-support.php-fcgi-children">
  <h3 class="title">PHP_FCGI_CHILDREN</h3>
  <p class="para">
   Теперь принимается во внимание <var class="varname">PHP_FCGI_CHILDREN</var>. Если задана
   эта переменная окружения, то первый процесс <var class="filename">php-cgi.exe</var> породит
   указанное количество потомков, которые будут разделять те же TCP-сокеты.
  </p>
 </div>

 <div class="sect2" id="migration71.windows-support.ftok">
  <h3 class="title">ftok()</h3>
  <p class="para">
   Добавлена поддержка для <span class="function"><a href="function.ftok.php" class="function">ftok()</a></span>
  </p>
 </div>
</div><?php manual_footer($setup); ?>