2010-11-09 74 views
0

je linke pour appeler l'application java de PHP:caractères UNSUPPORT dans le chemin du fichier de ligne de commande

exec('LC_ALL=en_US.utf-8 java -jar /test.jar' . $filepath . '); 

Mais toujours il y a des personnages non pris en charge dans le chemin du fichier. Par exemple: # &; ? * [ESPACE] ..., après les avoir changés en # \ & ... ça ira.

Mais une liste complète de ces caractères n'a pas pu être trouvée.

Des idées pour résoudre ce problème?

Répondre

1

Jetez un oeil à escapeshellarg() et escapeshellcmd().

Ils prendront soin de tout l'assainissement nécessaire pour vous.

Si $filepath vient de l'extérieur (par exemple de l'entrée de l'utilisateur), en cours d'exécution escapeshellarg() est obligatoire pour éviter les injections.

+0

Ce nom de fichier affiche toujours l'erreur java 44248-1 (ru) V01 - обращение ЕА_каталог экспорт.doc –

+0

Exception dans le thread "principal" java.lang.IllegalArgumentException: INPUTFILE n'existe pas : 44248-1 (ru) v01 - _ .doc –

+0

@bruce c'est un problème différent, très probablement un problème de jeu de caractères à cause des caractères cyrilliques. C'est beaucoup plus complexe. Vaut une question séparée –