我需要一个关于使用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;
Run Code Online (Sandbox Code Playgroud)
并像echo exec一样传递它($ path);
很多问题,我想知道PHP profis的观点.
谢谢
在PHP中,我通过调用列出了一些文件exec("dir ...")。但是,这奇怪地仅适用于本地驱动器。在网络驱动器上,它具有非零结果状态代码,并且不返回任何结果。
我在Windows XP Professional上运行Apache。
有什么技巧可以解决此问题?还是查看错误消息?
编辑:apache在与我相同的用户下运行,我可以从命令行进行操作
我要找到一个名为'A'的目录,然后启动一个名为'B'的可执行文件,其中包含一个路径作为参数,并且有一行带有execl():
execl("./C","C",path,(char*)0);
perror("Exec failed");
Run Code Online (Sandbox Code Playgroud)
其中C在'A'中并且设置了suid位.
.我想到了类似的东西:
find -name A -execdir {}/B path \
Run Code Online (Sandbox Code Playgroud)
但是我得到的是:
Exec failed: Permission denied
Run Code Online (Sandbox Code Playgroud)
怎么了 ?从A发射B给我没有错误.
对不起,如果这是一个愚蠢的问题,我是bash脚本的新手.感谢任何帮助,非常感谢.
我已经阅读了很多关于我的问题的类似SO问题,似乎没有一个问题.如果它是相关的,我在Apache 2.2上运行PHP 5.3.8并且PHP运行的exec()nt authority\system
$cmd = "java -version";
$res = exec($cmd, $output, $return);
var_dump($res, $output, $return);
Run Code Online (Sandbox Code Playgroud)
生产:
string '' (length=0)
array
empty
int 0
Run Code Online (Sandbox Code Playgroud)
$return0提示这是成功的.有趣的是,如果我跑:
$cmd = "java -version 2> response";
Run Code Online (Sandbox Code Playgroud)
使用预期输出创建文件:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
所以我的问题:为什么$output没有人口稠密?
评论更新
的结果 $res = exec("dir c:", $output, $return);
string ' 2 Dir(s) 335,636,791,296 bytes free' (length=51)
array
0 => string ' Volume in drive C …Run Code Online (Sandbox Code Playgroud) 我是Visual Basic的新手.我正在使用VB Premium 2012.有没有办法exe用params 打开/启动文件(不是我的应用程序).我知道我们可以用批量编码echo和东西来做.可以在vb中完成吗?
我想用app.exe"params" 打开" -login usernamehere passwordhere"
我有一个文件,Notification.php这是一个类.它的结构是这样的:
Class Notificaiton
{
public function sendNotification($token,$count)
{
// Here is the code for sending push notification(APNS)
}
}
Run Code Online (Sandbox Code Playgroud)
通常,如果我想从另一个PHP文件中调用此函数,那么我必须创建一个类的对象,然后调用它的方法如下:
$notification = new Notification();
$notification->sendNotification($token,$value);
Run Code Online (Sandbox Code Playgroud)
但我想做的是在后台进程中调用它.所以我使用exec()如下命令:
exec("/usr/bin/php /path/to/Notification.php >> /path/to/log_file.log 2>&1 &");
Run Code Online (Sandbox Code Playgroud)
在这里,我不知道如何可以调用function(sendNotificaiton())的file(Notification.php),并传递参数的参数:$令牌和$算什么?
我发现exec/shell_exec/passthru commands可以帮助我.但在这种情况下,我用这三个命令中的哪个命令?
请指导我这个.任何帮助将不胜感激.
我正在编写一个终端程序,使用ruby作为一个用C++和Java编写的程序的启动器,它应该在分布式系统中执行.
我想在ruby中翻译这条指令:
for i in {1..40}; do
ssh node$i program & #note & so that that process is detached
done
Run Code Online (Sandbox Code Playgroud)
这是我的红宝石代码:
class Launcher
# Other method that we can ignore
def order(command)
@nodelist.each {#Do something here}
end
end
Run Code Online (Sandbox Code Playgroud)
我想创建一个线程池,每个线程执行该命令.这是合适的方式吗?因为我研究线程不能执行"exec",因为线程共享相同的内存地址.
我正在开发一个命令行java应用程序,它必须运行gradlew.bat assembleRelease在此目录中调用的程序:this.workDir+"/Project/CapAndroid"
所以我这样做了:
Process p = Runtime.getRuntime().exec("gradlew.bat assembleRelease", null , new File(this.workDir+"/Project/CapAndroid"));
Run Code Online (Sandbox Code Playgroud)
该文件在该目录中100%确定,它在Linux中运行良好,但在Windows上无效!我收到了这个错误:
java.io.IOException:无法运行程序"gradlew.bat"(在目录"C:\ Users\Administrador\Desktop\generators\And\jobs\2247994\Project\CapAndroid"中):CreateProcess error = 2,系统找不到指定的文件
我认为windows有一个问题,就是要知道在exec()方法的第一个参数中传递的命令必须在最后一个参数传递的目录中执行.Linux也很完美,OS X也是如此,问题仅出在Windows中
非常感谢
我有一个小问题exec().我有来自Kivy GUI的字符串,我需要执行并存储执行代码中的值.
class gui(BoxLayout):
def proces(self):
t = threading.Thread(target=self.graf)
t.daemon = True
t.start()
def graph(self):
CodeInput=self.ids.codas
Code=CodeInput.text
x, y = [], []
exec(Code)
print(x,y) # empty list prints
# then x y will serve for plotting a graph
Run Code Online (Sandbox Code Playgroud)
这是'Code'中的一个字符串:
def values():
x=np.linspace(0,3.14,100)
y=np.sin(x)
print(x) # of course works
return x,y
x,y=values()
Run Code Online (Sandbox Code Playgroud)
一切都工作,除了我不能从exec(代码)获取值x,y.它像exec()是完全独立的操作,可以启动但无法输入.
我正在尝试使用Go的os/exec Command()来模拟按键,有时候我会想要快速连续多次使用这个按键.我使用的是exec.Command叫"XTE","关键XF86AudioPlay",暂停其在Linux OS上的音乐.虽然Command可以Start() 或 Run()没有问题,如果我再次尝试执行,我会收到一个错误:
exec: already started
Run Code Online (Sandbox Code Playgroud)
我已经尝试Process.Kill()在执行后立即使用,以便释放它,但这将使执行不起作用.我从这里得到了这个想法:在Golang中终止一个以os/exec开头的进程
我的代码使用了一个switch并相应地调用了这个暂停函数,但我只是简单地分享我编写的代码的基础,case作为一个示例函数:
cmd := exec.Command("xte", "key XF86AudioPlay")
//...
func Pause() {
err := cmd.Start() // or cmd.Run()
if err != nil {
fmt.Println(err)
}
err = cmd.Process.Kill()
if err != nil {
fmt.Printf("Failed to kill: %s", err)
}
}
Run Code Online (Sandbox Code Playgroud)
所以,回顾一下,我成功地调用它一次,但成功调用后Pause(),我从cmd.Start()/ Run()读取错误:exec: already started.
我也尝试过 …