关于PHP中的exec()函数

时间:2011-11-25 15:36:24

标签: php exec

我需要一些关于使用PHP脚本执行.exe文件的小信息。我读到可以使用exec()或passthru()或echo system()执行.exe文件。

是否可以运行存储在我的Windows机器上的.exe文件,例如C:目录或.exe文件应该存储在Web服务器上以通过php脚本运行它。

如果需要,我需要将.exe文件的路径提供给exec()函数,例如: file.exe存储在C:\ Programs \ mydocs \ file.exe。

我可以将此路径存储在像

这样的变量中
$path =  C:\Programs\mydocs\file.exe;

并像echo exec($ path);

一样传递它

很多问题,我想知道PHP profis的观点。

由于

6 个答案:

答案 0 :(得分:6)

  

是否可以运行存储在我的Windows机器上的.exe文件,例如C:目录或.exe文件应该存储在Web服务器上以通过php脚本运行它。

PHP只能在运行它的服务器上执行文件(它也必须具有正确的权限)。

如果您正在尝试执行我认为您正在尝试执行的操作,即在用户计算机上执行命令,则阻止某人使用该命令:

exec('format c:');

格式化访问者的C盘?


  

我可以将此路径存储在像

这样的变量中      

$path = C:\Programs\mydocs\file.exe;

     

并像echo exec($ path);

一样传递它

这会给你一个语法错误,你需要引号:

$path = 'C:\Programs\mydocs\file.exe';

答案 1 :(得分:3)

不,您的示例是语法错误

是的,如果你引用字符串: -

$path = 'C:\Programs\mydocs\file.exe';

答案 2 :(得分:1)

您的问题并不完全清楚PHP脚本的运行位置。如果它在不是你的工作站的网络服务器上运行,那么根本就没有;您无法通过在其他服务器上运行的PHP打开本地应用程序。您希望启动的应用程序必须与PHP脚本位于同一服务器上。

也就是说,如果您希望在本地工作站或服务器上运行应用程序,那么它只是:

exec('C:\path\to\program.exe');

确保使用单引号('C:\ path \ to \ program.exe')或双引号双反斜杠(“C:\ path \ to \ program.exe”)。在这种情况下,单引号效率更高,更合适。

答案 3 :(得分:1)

如果使用引号,则可以将路径存储为变量,在另一种情况下(带引号)可以显示语法错误。 尝试使用下面两种语法:

$path = 'C:\Programs\mydocs\file.exe';

或双引号

$path = "C:\Programs\mydocs\file.exe";

答案 4 :(得分:0)

如果文件驻留在服务器计算机上并且服务器进程具有访问/执行它的适当权限,则只能执行该文件。您无法在远程用户计算机上执行文件。

答案 5 :(得分:0)

根据服务器上的安全系统*,您可能会按照自己的意愿行事。

但是,考虑到你对PHP的语法知之甚少,我怀疑你应该使用exec()

*,例如 suexec chrooting apache ,或在PHP上启用安全模式或将其作为单独服务运行(在视窗)。您是否注意到很多事情可能出错?