所以我已经阅读了大约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
还有第二个参数,也许你应该看看那个。