Это очень запутанный вопрос.Я должен был догадаться, что могут означать такие вещи, как ", передающие эти аргументы с командной строкой ", которые не имеют смысла в том виде, в каком они стоят.Этот ответ основан на угадывании того, каким был бы ваш вопрос на английском языке.
Кажется, что вы можете вызывать вашу программу Java из командной строки, если вы избегаете метасимволов, которые в противном случае оболочка для вас использует.Это нормально и ожидаемо, и каждый, кто использует оболочку для запуска программ с символами, такими как *
в их синтаксисах командной строки, должен быть давно знаком.
Ваша настоящая проблема заключается в том, что вы не можетевызовите эту самую Java-программу из скрипта PHP, потому что вы передаете ее '3 * 2'
(с кавычками) в качестве единственного аргумента командной строки, предоставленного exec()
.Опять же, проблема здесь, скорее всего, другая известная.Когда кто-то запускает программу через оболочку с командной строкой 3 \* 2
(без кавычек, обратите внимание), она фактически разделяется оболочкой на три аргумента командной строки: 3
, *
и 2
которые на самом деле обеспечивает оболочка системному вызову execve()
.Так вот чего ожидает ваша Java-программа.Вы должны убедиться, что именно так и происходит, когда вы вызываете программу из PHP.