首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在PHP中使用exec()运行.exe文件

无法在PHP中使用exec()运行.exe文件
EN

Stack Overflow用户
提问于 2013-07-04 05:43:09
回答 7查看 8K关注 0票数 4

我尝试使用一个.exe文件来执行计算并将输出传递给PHP语言。我使用C++创建了一个Hello World .exe文件,但是我无法让它执行它。

如果我从CMD运行这个命令,我会得到正确的输出:

代码语言:javascript
运行
复制
C:\path\file.exe

但是如果我在PHP中这样做,输出是一个空字符串:

代码语言:javascript
运行
复制
exec('C:\path\file.exe',$out);
var_dump($out);

但这会显示正确的输出:

代码语言:javascript
运行
复制
exec('ipconfig',$out);
var_dump($out);

我在Windows7上使用WAMP。

编辑:以下是C++程序:

代码语言:javascript
运行
复制
#include <iostream>
using namespace std;

int main() {
    cout << "Hello World" << endl;
    return 0;
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-07-04 05:58:01

以下是一些可能有帮助的建议:

  1. 改为使用/,它也可以在windows下运行。
  2. 如果您的路径包含空格,请将其括在双引号内,并应在双引号之外传递。

确保您的程序实际写入的是,而不是STDERR。

票数 7
EN

Stack Overflow用户

发布于 2013-07-04 05:47:25

在单引号的字符串中,您仍然需要转义反斜杠,因此要获得\,您需要\\

代码语言:javascript
运行
复制
exec('C:\\path\\file.exe',$out);
票数 6
EN

Stack Overflow用户

发布于 2013-07-17 21:27:55

使用return_var参数检查命令的返回值。

代码语言:javascript
运行
复制
$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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17458610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档