我需要一些关于使用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的观点。
由于
答案 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上启用安全模式或将其作为单独服务运行(在视窗)。您是否注意到很多事情可能出错?