从CMD启动代码是可行的,但不是通过PHP exec脚本。。。为什么会这样?

从CMD启动代码是可行的,但不是通过PHP exec脚本。。。为什么会这样?,php,windows,cmd,Php,Windows,Cmd,当我登录到Windows Server 2008并使用cmd.exe作为管理员运行此代码时,它可以工作: php -f e:\path\to\file\file-name.php go 4001 但是,当我尝试从php文件启动时,它不会: $cmd = escapeshellarg("php -f e:\path\to\file\file-name.php go 4001"); exec($cmd); exit; 我已经做了6个小时了,找不到解决办法。我甚至尝试过pstools来启用对ps

当我登录到Windows Server 2008并使用cmd.exe作为管理员运行此代码时,它可以工作:

php -f e:\path\to\file\file-name.php go 4001
但是,当我尝试从php文件启动时,它不会:

$cmd = escapeshellarg("php -f e:\path\to\file\file-name.php go 4001");
exec($cmd);
exit; 
我已经做了6个小时了,找不到解决办法。我甚至尝试过pstools来启用对psexec的访问,但仍然没有成功。我甚至不能从命令行让psexec工作,因为我似乎无法通过go和4001传递变量

更新

当我使用PHP文件运行代码时,什么都没有发生,我想要创建的文件没有被创建,我不知道如何通过这个方法抛出错误

<?php
if(function_exists('exec')) {
    echo "exec is enabled";
}
?>
输出时,启用exec

请帮忙

我没有收到任何错误或警告

好吧,你有这个:

exec($cmd);
问题是:

string exec string$命令[,数组和$output[,int和$return\u var]]

更改代码以使用提供错误信息的可选参数

在任何情况下,您都将完整的命令编码为单个参数。这是行不通的:我在命令行中计算了5个不同的令牌,而不是一个。您必须分别对所有5项进行编码,并且需要对命令和参数使用不同的函数


此外,escapeshellarg基本上是一个仅用于Unix的函数,修补得很差,因此它在Windows上没有明显的安全问题,但在Windows上无法正常工作,它通常会剥离字符而不是转义。我发现一个很容易适应独立使用的工具。

它不起作用,不能很好地描述正在发生的事情。有错误信息吗?日志?实际和预期的产量是多少?在PHP.ini中是否允许使用Exchange?对于Windows,您需要双脱机,因为EXPHP将在代码中考虑T作为选项卡,所以我建议您双击该斜杠,因为您的代码被封装在双引号中,在双引号中,PHP文件的某些路径将需要跳转,也可以查看Excel。现在我已经逃过了cmd,但它仍然不起作用,我再次没有收到任何错误或警告。我知道它不起作用,因为它没有创建我需要的文件。