Я строю веб-сайт с использованием php. Мне нужно отправить переменную в исполняемый файл командной строки с сайта php, запустить исполняемый файл, а затем прочитать ответ.
Я полагаю, что неправильно отправляю аргумент в исполняемый файл.
Мой php код:
<?php
$a=escapeshellarg('6');
//set $c [lindex $argv 0];
$answer = shell_exec("D:/WebPages/Test/PHP_Test.exe $a");
echo $answer;
?>
Мой c # исполняемый код
using System;
namespace PHP_Test
{
class Hello
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("Please enter a numeric argument.");
}
else
{
Console.WriteLine("Hello World!");
}
}
}
}
Как вы можете видеть, мой исполняемый файл в настоящее время просто настроен для предоставления ответа в зависимости от того, был ли указан аргумент или нет. Когда я не отправляю аргумент из php, я получаю правильный ответ («Пожалуйста, введите числовой аргумент»). Однако всякий раз, когда я пытаюсь представить аргумент, я не получаю никакой обратной связи, что наводит меня на мысль, что я делаю это неправильно.
Спасибо за любую помощь, спасибо.
Я нашел часть ответа на мой вопрос. При включении пути к исполняемому файлу по какой-то причине он не позволял мне публиковать какие-либо аргументы. Я поместил свой исполняемый файл в папку каталога и назвал его без указания пути к исполняемому файлу, а затем он разрешил аргументы.
С одинарными кавычками переменная не заменяется ее значениями, следует использовать двойные кавычки:
редактировать: и добавить 2>&1
в конце команды, чтобы получить также STDERR
$answer = shell_exec("D:\WebPages\PHP_Test.exe $a 2>&1");