PHP执行Windows配置IIS

时间:2014-02-06 20:41:36

标签: php windows iis 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 ");
?>

并且都工作.. infact chdir说执行该行的php文件存储在PC上的确切位置..

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

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

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

以及为什么如果我使用命令提示符移动到存储php文件的文件夹并键入svn update它可以正常工作

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

返回NULL?

非常感谢任何帮助。

感觉我对配置设置有一些限制,因为当我在本地使用apache尝试时,我可以使大多数命令工作(shell_exec,system,exec,即使没有cmd / c)

4 个答案:

答案 0 :(得分:8)

确定。

我设法解决了这个问题..

这就是我所做的:

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

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

这将返回computername,后跟用户名..

现在在运行网络服务器的计算机上运行

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);

希望这可以帮助那些遇到问题的人!

答案 1 :(得分:0)

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

<?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

答案 2 :(得分:0)

好的,根据你的答案,我认为你应该试试这个:

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

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

现在发生了什么?

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

答案 3 :(得分:0)

唯一帮助我的是完整的路线:

app.handle('rhymeHandler', async conv => {
  const result = await axios.get(`https://api.datamuse.com/words?rel_rhy=book`)
  result.data.map(wordObj => {
    console.log(wordObj.word);
    words = [...words, wordObj.word];
  });
  addWords(conv);
});