Différents systèmes d'exploitation utilisent différents séparateurs de chemin:
Dans Windows , le séparateur de chemin est une barre arrière ( \ ).
Dans Linux et MacOS , le séparateur de chemin est une barre oblique avant ( / ).
Par exemple, le chemin de fichier sous Windows peut ressembler à C: \ XAMPP \ HTDOCS \ Project , et / var / www / html / projet sous Linux ou MacOS.
Cela signifie que lors de l'écriture de scripts PHP multiplateforme, vous devez juger dynamiquement le système d'exploitation et sélectionner le séparateur de chemin approprié pour éviter les erreurs.
PHP fournit un Directory_separator constant, qui peut sélectionner automatiquement le séparateur de chemin correct en fonction de l'environnement en cours d'exécution. Cette constante a une barre arrière \ valeur dans Windows et un ForwardSlash / dans Linux ou MacOS. Nous pouvons utiliser cette constante pour construire des chemins de fichier compatibles multiplateformes.
<?php
// Sélectionnez dynamiquement les séparateurs de chemin
$path = "some" . DIRECTORY_SEPARATOR . "folder" . DIRECTORY_SEPARATOR . "file.txt";
// Chemin de sortie,S'adapter automatiquement à différentes plateformes
echo $path;
?>
Ce code publie correctement le séparateur de chemin sur les systèmes Windows ou Linux. Par exemple, publiez certains \ dossier \ file.txt sur Windows et certains / dossier / file.txt sur linux.
Pour garantir l'exactitude du chemin du fichier, nous pouvons utiliser la fonction realPath () pour obtenir le chemin absolu du fichier et résoudre automatiquement les parties relatives du chemin. Cette fonction renvoie le chemin standardisé reconnu par le système, garantissant en outre la compatibilité multiplateforme du script.
<?php
// Obtenez le chemin absolu vers le fichier
$absolutePath = realpath('some/folder/file.txt');
// Chemin absolu de sortie
echo $absolutePath;
?>
Après avoir utilisé RealPath () , même si des chemins relatifs ou des liens symboliques sont utilisés dans le chemin du fichier, il peut renvoyer le chemin standard du système, garantissant en outre la cohérence multiplateforme.
En ce qui concerne les URL, nous devons également prêter attention aux différences dans l'analyse des URL par différentes plateformes. Le séparateur de chemin dans l'URL utilise toujours une barre oblique avant / , quel que soit le système d'exploitation.
Si le chemin d'accès URL est impliqué dans le code, vous pouvez utiliser la barre oblique / directement directement, et vous ne vous tromperez pas même si vous l'exécutez sur Windows.
<?php
// utiliser m66.net remplacer URL nom de domaine
$url = "https://m66.net/some/folder/file.txt";
// Sortir URL
echo $url;
?>
La sortie d'URL par ce code utilisera toujours une slash vers l'avant / et ne fera pas d'erreurs même sur les systèmes Windows.
Dans certaines applications complexes, vous devrez peut-être construire des chemins dynamiquement en fonction du système d'exploitation. Vous pouvez combiner la constante Directory_Separator et la constante PHP_OS pour déterminer le système d'exploitation actuel, puis effectuer des ajustements correspondants.
<?php
// Obtenez le type de système d'exploitation actuel
$os = PHP_OS;
// Sélectionnez différents séparateurs de chemin en fonction du système d'exploitation
if ($os == 'WINNT' || $os == 'Windows') {
$separator = '\\'; // Windows 系统utiliser反斜杠
} else {
$separator = '/'; // Linux/macOS 系统utiliser正斜杠
}
// Construire dynamiquement des chemins
$path = "some" . $separator . "folder" . $separator . "file.txt";
// Chemin de sortie
echo $path;
?>
Ce code ajuste dynamiquement le séparateur de chemin en fonction du système d'exploitation et fonctionne correctement sur les systèmes Windows et Linux.
Utilisez la constante Directory_Separator : c'est le moyen le plus simple de gérer les séparateurs de chemin, et PHP sélectionnera automatiquement les séparateurs appropriés.
Utilisez la fonction RealPath () : vous pouvez standardiser les chemins et résoudre des problèmes tels que les chemins relatifs.
Utilisez des barres obliques vers l'avant / lors du traitement des URL : le séparateur de chemin dans l'URL est toujours des barres obliques vers l'avant, quel que soit le système d'exploitation.
Chemins d'ajustement dynamiques en combinaison avec les constantes PHP_OS : pour des exigences plus complexes, vous pouvez juger manuellement le système d'exploitation et sélectionner différents séparateurs.
En utilisant ces méthodes, vous pouvez vous assurer que les scripts PHP fonctionnent correctement sur différents systèmes d'exploitation, en évitant les problèmes de compatibilité causés par les séparateurs de chemin.