Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将带有路径的参数传递到命令行可执行文件_Php_C++_Xcode_Executable - Fatal编程技术网

使用php将带有路径的参数传递到命令行可执行文件

使用php将带有路径的参数传递到命令行可执行文件,php,c++,xcode,executable,Php,C++,Xcode,Executable,我有一个简单的helloworld命令行应用程序,我试图通过php执行它,但我不知道如何切换到应用程序的debug文件夹,然后运行可执行文件。到目前为止,我已经尝试使用popen移动终端所在的位置,但是我这样做似乎不正确,然后使用exec执行命令 这是我的PHP文件: <?php $loc = '/Users/dave/Library/Developer/Xcode/DerivedData/HelloWorld-akuofooecqboeybtsfalcrelvfjt/Build/Prod

我有一个简单的helloworld命令行应用程序,我试图通过php执行它,但我不知道如何切换到应用程序的debug文件夹,然后运行可执行文件。到目前为止,我已经尝试使用
popen
移动终端所在的位置,但是我这样做似乎不正确,然后使用
exec
执行命令

这是我的PHP文件:

<?php
$loc = '/Users/dave/Library/Developer/Xcode/DerivedData/HelloWorld-akuofooecqboeybtsfalcrelvfjt/Build/Products/Debug';
$argv = "./HelloWorld j";
popen($loc, 'r');
echo exec($argv);

在php中,您可以通过
system()
函数执行命令:

system('YOUR COMMAND - FOR EXAMPLE ./HelloWorld (in your path)');
要得到结果,可以将其放入变量中

$test=system("some command");
var_dump($test);
就你而言:

system('PATH/HelloWorld j'); // runs your HelloWorld executable file
另一种解决方案是使用
shell\u exec()
函数。如php.net示例所示:

$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
$output=shell_exec('ls-lart');
回显“$output”;
每一种都有自己的优点和缺点。您可以在php.net/以下链接中阅读有关上述函数的更多信息:


这将如何工作?如果在我不在正确的目录下时没有使用系统,它将不会给我答案。您必须将可执行应用程序放入预定义的目录中。例如,在PHP应用程序的目录中。它的目录是动态变化的吗?你可以很容易地做到:system('PATH/HelloWorld j')不,但它位于由
Xcode
创建的目录中,而不是由我创建的目录中,因此将可执行文件移动到
MAMP htdocs
文件中的我的php目录可能会有问题。路径有效,谢谢,我不知道你可以执行这样的可执行文件。如果你能把它添加到你的答案中,那对其他想知道答案的人来说将是非常好的。
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";