我尝试使用一个.exe文件来执行计算并将输出传递给PHP语言。我使用C++创建了一个Hello World .exe文件,但是我无法让它执行它。
如果我从CMD运行这个命令,我会得到正确的输出:
C:\path\file.exe但是如果我在PHP中这样做,输出是一个空字符串:
exec('C:\path\file.exe',$out);
var_dump($out);但这会显示正确的输出:
exec('ipconfig',$out);
var_dump($out);我在Windows7上使用WAMP。
编辑:以下是C++程序:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World" << endl;
return 0;
}发布于 2013-07-04 05:58:01
以下是一些可能有帮助的建议:
/,它也可以在windows下运行。确保您的程序实际写入的是,而不是STDERR。
发布于 2013-07-04 05:47:25
在单引号的字符串中,您仍然需要转义反斜杠,因此要获得\,您需要\\
exec('C:\\path\\file.exe',$out);发布于 2013-07-17 21:27:55
使用return_var参数检查命令的返回值。
$return = -1;
exec('C:\path\file.exe',$out,$return);
echo "Return value: $return\n";
var_dump($out);在您的例子中,如果它被成功执行,它应该返回0。如果没有找到文件,它可能会返回1。但是,如果我的怀疑是正确的,我认为最有可能的返回值是-1073741515。
错误-1073741515 (0xc0000135)是应用程序缺少DLL时返回的内容。如果您使用的是编译器运行时库的DLL版本,则会发生这种情况。
该应用程序在本地运行时可能工作正常,因为您安装了DLL,但在web服务器上运行时仍可能失败,因为web服务器不一定具有这些DLL。
如果这就是问题所在,您需要重新编译您的应用程序以使用静态库,或者在web服务器上安装必要的DLL。您没有说明您使用的是什么编译器,但有关Visual C++使用的DLL的更多信息,请参见here。
https://stackoverflow.com/questions/17458610
复制相似问题