Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有IIS配置的Windows上的PHP exec_Php_Windows_Iis_Exec - Fatal编程技术网

具有IIS配置的Windows上的PHP exec

具有IIS配置的Windows上的PHP exec,php,windows,iis,exec,Php,Windows,Iis,Exec,因此,我已经阅读了大约10个答案,每个人似乎都提出了一些由于某种原因不起作用的想法 我试图执行一个简单的命令行,它是“svn update”,但它不工作,并且返回NULL 因此,我尝试了尝试和错误的方式,现在这是我能说的 我试过几个命令,比如 <?php exec ("cmd /c ping 127.0.0.1 -n 1 > results.txt "); ?> 及 两种方法都有效。。infact chdir表示执行该行的php文件存储在pc上的确切位置 现在的问题是

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

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

因此,我尝试了尝试和错误的方式,现在这是我能说的

我试过几个命令,比如

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


两种方法都有效。。infact chdir表示执行该行的php文件存储在pc上的确切位置

现在的问题是,为什么有些命令是这样的:

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

不工作?即使在文件夹中我有几个文件和目录,这个结果仍然是空的

为什么我要使用命令提示符移动到php文件所在的文件夹中,并键入svn update,它就可以工作了

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

返回空值

非常感谢您的帮助


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

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

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

在安装了Xampp的Windows7上,它运行得非常好。然而,对于IIS,“用户”可能没有目录的权限,我想可能是系统用户IIS-IUSR或类似的东西


这是一个可能有助于提高IIS用户权限的链接:

好的,根据您的回答,我认为您应该尝试以下方法:

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

现在发生了什么

exec
中还有第二个参数,也许您也应该看看这个参数

好的

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

这就是我所做的:

首先检查特定网站正在运行的用户名。。为此:

<?php 
$out = array();
exec('cmd /c whoami 2>&1',$out,$exitcode);
echo "<br />EXEC: ( exitcode : $exitcode )";
echo "<hr /><pre>";
print_r($out);
echo "</pre>";
?>
并赋予用户名管理员权限

这将允许您最终使用exec或system_exec运行所需的任何命令


另一方面,继续执行我的SVN命令时,我发现我有另一个问题,即当您运行它时,它将查找管理员帐户下的配置文件,并将给出一个错误,说明:

exec('cmd /c svn update --config-dir C:\Users\Administrator\AppData\Roaming\Subversion C:\\inetpub\\vhosts\\websitename\\httpdocs\\folder 2>&1',$out,$exitcode);
要解决此问题,只需在命令中指定config_dir,方法如下:

        $template_file = "C:/archivos/archivos.tex"
        $cmd = sprintf("C:/texlive/2020/bin/win32/pdflatex.exe " .$template_file );
        $result = exec($cmd, $output, $a);

希望这能帮助那些像我一样有问题的人

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


因此,当您从php
exec
函数运行'cmd/csvn update>result.txt'命令时,它就不起作用了。如果你自己从控制台运行它,它会工作吗?是的,没错。。但是dir命令也有同样的问题,如果从控制台运行该命令,就会得到正确的输出。例如,ping和chdir给出了相同的结果,如果您绕道创建一个.bat文件,让php运行该文件而不是“svn up”命令,该怎么办?这就是我一整天都在尝试的。。我也试过同样的方法,但没有任何改变。。执行一些命令,但不执行dir,不执行svni也认为这是一个权限问题,但除了授予IISUSR完全访问权限(777)之外,我不知道还能做什么。我没有从你给我的链接中找到任何进一步的帮助,sorry@user889030你读过我的答案吗?显然不是……谢谢你的提示!由于我没有安装tortoisesvn命令行,所以我使用sliksvn。。我试着这样做作为一个命令:在等待一个合适的解决方案时,我在windows 2k8上添加了一个自动操作,以便它每小时启动bat文件,从那时起开始工作,我正在解析result.txt,以便知道源代码是否已更新。。可能会坚持这个解决方案一段时间,直到我不知道如何从php直接运行cmd。我不太高兴我不得不给这个用户管理员权限。不幸的是,这是让它工作的唯一方法:(但是,感谢这个解决方案,我有一个类似的问题,我不能在服务器上使用:Windows server 2012 R2、IIS 8、PHP版本5.6.12 exec()命令。我有一个pdftotext程序,该程序将PDF转换为TXT并将结果写入文件,但exec返回错误1,因为用户IUSR_ANONYMOUSUSER没有访问CMD的权限。我们已经测试了AppPool用户,但它在那里不起作用,并给出了FORK错误。
control userpasswords2
svn: E125001: Can't determine the user's config path
exec('cmd /c svn update --config-dir C:\Users\Administrator\AppData\Roaming\Subversion C:\\inetpub\\vhosts\\websitename\\httpdocs\\folder 2>&1',$out,$exitcode);
        $template_file = "C:/archivos/archivos.tex"
        $cmd = sprintf("C:/texlive/2020/bin/win32/pdflatex.exe " .$template_file );
        $result = exec($cmd, $output, $a);