Appel d'un programme dont le chemin contient des espaces
1 réponse
Jean-Marc Molina
Bonjour,
Je ne parviens pas à appeler un programme Windows dont le chemin contient
des espaces depuis un script PHP. Le problème se pose-t-il aussi pour Linux
ou d'autres OS ?
Répertoire de travail : "C:\test copy"
Script PHP "copy.php" :
<?php
system ('"C:\test copy\mycopy" /B "C:\test copy\folder1\file1" "C:\test
copy\folder2\file2"');
?>
Batch mycopy.bat :
copy %1 %2 %3
À l'exécution du script j'ai le message d'erreur suivant :
« C:\>php "test copy\copy.php
'C:\test' is not recognized as an internal or external command,
operable program or batch file. »
Si je remplace le répertoire « test copy » par « test », sans espace ou «
test_copy », aucun problème.
Le problème ne se pose pas si la ligne de commande à exécuter n'a pas de
paramètre entre guillemets :
<?php
system ('"C:\test copy\mycopy" /B');
?>
Notezz que ces lignes de commande fonctionnenet parfaitement à l'extérieur
du script PHP, on peut les utiliser directement dans une fenêtre DOS.
En quels caractères doit-on transformer les espaces ? Par exemple dans une
URL on doit transformer les espaces en « %20 », parfois les \ en / ou \\...
Pour terminer, ceci n'est qu'un exemple, mon but est d'appeler un programme
situé dans le répertoire « "C:\Program Files" ». Sur la page
<http://fr.php.net/manual/en/function.system.php> du manuel quelqu'un
propose une solution pour appeler le programme htpasswd mais ses paramètres
n'ont pas de guillemets.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Molina
Jean-Marc Molina a écrit/wrote :
Je ne parviens pas à appeler un programme Windows dont le chemin contient des espaces depuis un script PHP. Le problème se pose-t-il aussi pour Linux ou d'autres OS ?
Il s'agit en fait d'un bogue présent dans la bibliothèque C. La solution consiste à exécuter la commande via l'application cmd et en utilisant l'option /C :
<?php
$cmd = "..."; // Votre commande system ("cmd /C "$cmd"");
?>
-- Jean-Marc.
Jean-Marc Molina a écrit/wrote :
Je ne parviens pas à appeler un programme Windows dont le chemin
contient des espaces depuis un script PHP. Le problème se pose-t-il
aussi pour Linux ou d'autres OS ?
Il s'agit en fait d'un bogue présent dans la bibliothèque C. La solution
consiste à exécuter la commande via l'application cmd et en utilisant
l'option /C :
<?php
$cmd = "..."; // Votre commande
system ("cmd /C "$cmd"");
Je ne parviens pas à appeler un programme Windows dont le chemin contient des espaces depuis un script PHP. Le problème se pose-t-il aussi pour Linux ou d'autres OS ?
Il s'agit en fait d'un bogue présent dans la bibliothèque C. La solution consiste à exécuter la commande via l'application cmd et en utilisant l'option /C :
<?php
$cmd = "..."; // Votre commande system ("cmd /C "$cmd"");