如何执行Windows10';s来自PHP的Bash命令


How to execute Windows10's Bash command from PHP?

Windows 10今天刚刚发布周年更新。现在您可以从Linux子系统使用Ubuntu风格的bash命令了。

问题是:如何从PHP执行Windows10的Bash命令?

我试过

<?php  
    exec('bash',$out1,$result1);
    exec('ls -l',$out2,$result2);
    var_dump($out1);
    var_dump($result1);
    var_dump($out2);
    var_dump($result2);

它不起作用。所有$out都是空数组,并且两个$results都是1。知道吗?


刚刚发现我可以直接从子系统运行web服务器。

例如

$ sudo apt-get install apache2
$ sudo service apache2 start

然后将所有web内容放入位于%localappdata%''Lxss''rootfs 的子系统目录中

此时,我可以随心所欲地执行bash脚本。

您不能。Windows上的Ubuntu被实现为直接位于Windows内核之下的另一个子系统。因此,它与正常的Windows进程分开运行,不能与它们交互。(至少我是这么理解的)。但也许您只需要使用C:'Windows'System32'bash.exe作为命令。

Bash不用于运行服务器,但您可以在Bash上运行PHP-CLI而不会出现问题。

与其在Windows中运行PHP脚本然后访问bash,不如创建一个命令直接在bash中运行PHP脚本。

因此,您将运行`bash.exe-c"php路径/to/php脚本.php"

https://blogs.msdn.microsoft.com/commandline/2016/10/19/interop-between-windows-and-bash/