Support Windows
Support pour les chemins long et UTF-8
Si une application web est conforme à l'UTF-8, aucune action supplémentaire n'est requise. Pour des applications qui dépendent de chemins dans un encodage différent que UTF-8 pour l'I/O, une directive INI doit être explicitement définit. La vérification des paramètres d'encodage INI se fie à l'ordre dans le cœur (core) :
- internal_encoding
- default_charset
- zend.multibyte
Plusieurs fonction pour la gestion des codepage ont été introduite :
- sapi_windows_cp_set() to set the default codepage
- sapi_windows_cp_get() to retrieve the current codepage
- sapi_windows_cp_is_utf8()
- sapi_windows_cp_conv() to convert between codepages, using iconv() compatible signature
Ces fonctions sont thread safe.
La sortie de la console codepage est ajusté en fonction de l'encodage utilisé en PHP. En fonction du codepage OEM du système concret, la sortie visible pourrait ou pourrait ne pas être correct. Par exemple, avec le cmd.exe par défaut et sur un système avec le codepage OEM 437, la sortie dans codepage 1251, 1252, 1253 et d'autres peuvent être montrer correctement en utilisant UTF-8. Sur les mêmes systèmes, les charactères dans codepage tel que 20932 seront probablement pas montré correctement. Ceci fait référence aux régles système particulières pour codepage, la compabilité de la police et le choix du programme de console utilisé. PHP définit automatiquement la codepage console en accord avec les régles d'encodages depuis php.ini. Utiliser des consoles alternative à la place de cmd.exe directement pourrait apporter une meilleure expérience dans certains cas.
Toutefois soyez conscient, changer de codepage après que la requête a commencé peut causer des effets secondaires inattendue en CLI. La façon préférable est php.ini. Quand PHP CLI est utilisé dans un émulateur de console, qui ne supporte pas Unicode, il est possiblement nécessaire, d'éviter de changer la codepage de la console. La meilleure façon pour achever ceci est de définir l'encodage interne ou par défault pour correspondre à la codepage ANSI. Une autre méthode est de définir la directive INI output_encoding et input_encoding à la codepage requise, cependant dans ce cas la différence entre les codepages interne et I/O risque de causer du mojibake. Dans de rare cas, si PHP arrive à planter gracieusement, la codepage originale de la console peut ne pas être restaurée. Dans ce cas, la commande chcp peut être utilisé, pour la restaurer manuellement.
Attention particulière pour les systèmes DBCS - le changement de codepage lors de l'exécution en utilisant ini_set() risque de causer des problèmes d'affichage. À la différence des systèmes non DBCS, c'est que les charactères étendues nécessites deux consoles pour être affiché. Dans certains cas, seulement la mise en correspondance des caractères dans le jeu de glyphes de la police pourrait se produire, aucun changement de police se produit. Ceci est la nature des systèmes DBCS, la manière la plus simple de prévenir des problèmes d'affichages et d'éviter l'usage de ini_set() pour le changement de codepage.
En conséquence du support d'UTF-8 dans les flux, les scripts PHP ne sont plus limité à des noms de fichiers ASCII ou ANSI. Ceci est prêt à l'emplois en CLI. Pour d'autres SAPI, la documentation pour le serveur correspondant est utile.
Le support des chemins long est transparent. Les chemins plus long que 260 octets sont automatiquement préfixé par \\?\. La longeur maximale du chemin est limité à 2018 octets. Soyez conscient, que la limite des segments de chemin (longeur du basename) persiste.
Pour la meilleure portabilité, il est fortement recommendé de gérer les noms de fichiers, I/O et autre sujets connexe UTF-8. En outre, pour les applications console, l'usage d'une police TrueType est préférable et l'usage de ini_set() pour le le changement de codepage est déconseillé.
readline
L'extension readline est supporté à travers la » bibliothèque WinEditLine. Ainsi l'interface système interactive CLI est aussi supporté (php.exe -a).
PHP_FCGI_CHILDREN
PHP_FCGI_CHILDREN est désormais respecté. Si cette variable d'environement est définit, le premier processus php-cgi.exe exécutera le nombre spécifié d'enfant. Ceci partageront le même socket TCP.
Version en cache
22/12/2024 18:52:40 Cette version de la page est en cache (à la date du 22/12/2024 18:52:40) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration71.windows-support.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.