我想知道是否有人能帮我,我想调用一个小应用程序,只需返回输入即可-这只是一个简单的测试,看看我是否可以使用Ubuntu从php控制C++应用程序。然而,当我应该得到"你好"时,我得到的只是"数组"。
我这样做对吗?
这是PHP:
<?PHP
echo exec('whoami');
echo "---";
echo exec('pwd');
echo "---";
echo "Hello World - From PHP";
echo "---";
$dt = new DateTime();
echo $dt->format('Y-m-d H:i:s');
echo "---";
exec('var/www/aws-app-dev Hello', $output);
echo $output;
echo "---";
echo "end";
?>
这是一个简单的应用程序代码(全部!)
#include <iostream> using namespace std;
int main (int argc, char** argv) {
string i; i = argv[1];
cout << "aws-dev-app says | " + i << endl; // prints return 0; }
知道哪里出了问题吗?
浏览器中的输出为:
theadmin---/var/www/---Hello World - From PHP---2013-12-02 20:45:15---Array---end
然而它应该是:
theadmin---/var/www/---Hello World - From PHP---2013-12-02 20:45:15---Hello---end
始终首先检查文档!
从PHP.net中,我们看到exec
的签名是
string exec ( string $command [, array &$output [, int &$return_var ]] )
注意,output
(第二个参数)是一个数组。
output
如果存在
output
参数,则指定的数组将填充该命令的每一行输出。
要查看您的程序返回的内容,请替换:
echo $output;
带有
print_r($output);
尝试:
echo exec('var/www/aws-app-dev Hello');
如果您的程序只返回一行,则此操作有效。你也可以这样做:
exec('var/www/aws-app-dev Hello', $output);
foreach ($output as $line) {
echo $line, "<br />n";
}
将echo
更改为print_r
,这样您就可以看到完整的输出,然后为我们粘贴出来——看起来可能存在换行符,导致PHP将输出作为数组而不是字符串。