在具有IISconfiguration的Windows上执行PHP exec

所以我已经阅读了大约10个答案,每个人似乎都提出了一些由于某些原因不起作用的想法。

我想执行一个简单的命令行是“svn update”,但它不工作,它返回NULL

所以我已经尝试过尝试和错误的方式,现在这是我可以说的;

我曾尝试过几个命令

<?php exec ("cmd /c ping 127.0.0.1 -n 1 > results.txt "); ?> 

 <?php exec ("cmd /c chdir > results.txt "); ?> 

和两个工作..事实上,chdir说,执行该行的PHP文件的确切位置存储在PC上..

所以现在的问题是,为什么要这样的一些命令:

 <?php exec ("cmd /c dir > results.txt "); ?> 

不工作? 这个结果和空值,即使在文件夹我有几个文件和目录。

以及为什么如果我使用命令提示符移动到文件夹的PHP文件存储和键入svn更新它的工作和做

 <?php exec ("cmd /c svn update > results.txt "); ?> 

返回一个NULL?

任何帮助真的很感激。

感觉就像我对configuration设置有一些限制,因为当我尝试在本地使用Apache我可以得到大部分的命令工作(shell_exec,系统,执行,即使没有CMD / C)

好。

我已经设法解决这个问题..

这是我做的:

首先检查确切的网站运行的用户名是什么..这样做:

 <?php $out = array(); exec('cmd /c whoami 2>&1',$out,$exitcode); echo "<br />EXEC: ( exitcode : $exitcode )"; echo "<hr /><pre>"; print_r($out); echo "</pre>"; ?> 

这将返回计算机名后跟用户名..

现在在运行webserver的计算机上运行

 control userpasswords2 

并给管理员权力whoami说的用户名

这将允许你使用exec或system_exec来运行你想要的任何命令


另一方面继续我的SVN命令我发现我有另外一个问题,那就是当你运行它时,它会查找在管理员帐户下的配置文件,并会给出错误说:

 svn: E125001: Can't determine the user's config path 

要解决这个问题,你只需在命令中指定config_dir即可:

 exec('cmd /c svn update --config-dir C:\Users\Administrator\AppData\Roaming\Subversion C:\\inetpub\\vhosts\\websitename\\httpdocs\\folder 2>&1',$out,$exitcode); 

希望这可以帮助那些有我的问题的人!

这可能是系统用户权限问题。 我试过你的例子:

 <?php exec ("cmd /c dir > results.txt "); ?> 

在我安装了Xampp的Windows7上,它工作得很好。 但是对于IIS来说,“用户”可能没有权限访问目录,我想这可能是系统用户IIS-IUSR或类似的东西。

这是一个链接,可能有助于IIS的用户权限: http : //www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in -iis

好的,根据你的回答,我想你应该试试这个:

使用'svn.exe'可执行文件执行命令(替换[[reposity location]])。 有可能你的客户端有另一个svn.exe位置,但你必须自己弄清楚:)

 exec('cmd /c "c:\\Program Files\\TortoiseSVN\\bin\\svn.exe" up "[[repository location]]"'); 

现在发生了什么?

exec还有第二个参数,也许你应该看看那个。