php 控制iis
<?php
# PHP控制IIS的相关属性
# 收集人:韩湘子
# 邮箱:hanxiangzi@gmail.com
# MSN:hanxiangzi@gmail.com
# QQ:220670
/*站点属性和使用方法*********************************************************/
$LocalHostObject = New Com ("IIS://localhost/w3svc") ;
$Site = $LocalHostObject->Create("IIsWebServer",站点标识符);
//站点类型
$Site->Class;
//站点名称
$Site->ServerComment;
//站点绑定的IP:端口:域名
$Site->ServerBinDings;
//站点标识符
$Site->Name;
//获取站点主目录
$Site->GetObject("IIsWebVirtualDir","ROOT");
$Site->Path;
//匿名访问时所使用的帐号
$Site->AnonymousUserName;
//匿名访问时所用帐号的口令
$Site->AnonymousUserPass;
//日志文件的目录
$Site->LogFileDirectory;
//是否允许FrontPage扩展
$Site->FrontPageWeb = True;
//站点的类型
$Site->KeyType = "IIsWebServer";
//站点描述
$Site->bewrite;
//允许使用的带宽,1024=1K,如果是100K的话等于102400
$iissite->MaxBandwidth = '102400';
//允许IIS同时多少个并发数,也就是平常说的IIS连接数
$iissite->MaxConnections = '100';
//是否开通日志
$iissite->LogType = "0"; //0为不开通,1为开通W3C格式的日志
//指定404错误,Url为当前站点的文件
$iissite->HttpErrors = "404,0,Url,/404.htm";
//指定404错误,FILE为当前服务器绝对路径的文件
$iissite->HttpErrors = "404,0,FILE,/404.htm";
//指定脚本映身,有关这下面的扩展名映射可以查看默认网站的一些,复制过来即可,下面是用PHP做的例子
$iissite->ScriptMaps = ".php,E:softphp-5.2.3-Win32(1)php5isapi.dll,5,Get,HEAD";
/*站点的默认文档*********************************************************/
//是否允许默认文档
$Site->EnableDefaultDoc = True;
//站点的默认文档
$Site->DefaultDoc = "index.php,index.html"; //以英文标点,隔开
/*站点的运行状态*********************************************************/
$SiteStatus = New Com ("IIS://LocalHost/w3svc/".$ServerID);
//站点运行状态
$SiteStatus->Status;
//运行状态返回以下几个整数值:
//1代表网站运行状态为“正在启动”
$SiteStatus->Status = 1;
//2代表网站运行状态为“已经启动”
$SiteStatus->Status = 2;
//3代表网站运行状态为“正在停止”
$SiteStatus->Status = 3;
//4代表网站运行状态为“已经停止”
$SiteStatus->Status = 4;
//5代表网站运行状态为“正在暂停”
$SiteStatus->Status = 5;
//6代表网站运行状态为“已经暂停”
$SiteStatus->Status = 6;
//7代表网站运行状态为“正在继续”,就是暂停后的继续运行
$SiteStatus->Status = 7;
//-1代表出错
$SiteStatus->Status = -1;
//启动站点
$SiteStatus->Start;
//停止站点
$SiteStatus->Stop;
//继续站点,就是暂停后的继续运行
$SiteStatus->Continue;
//暂停站点
$SiteStatus->Pause;
/*站点的应用程序设置*********************************************************/
$iisdir = $Site->Create("IIsWebVirtualDir","ROOT");
//设置站点的应用程序可读,就是什么也不能执行
$iisdir->AccessRead = True;
//设置站点的应用程序可执行,只包括脚本,不包括执行文件
$iisdir->AccessScript = True;
//设置站点的WEB目录可写,这个很危险
$iisdir->AccessWrite = True;
//设置站点的应用程序可执行,包括脚本和执行文件
$iisdir->AccessExecute = True;
//设置站点的目录
$iisdir->Path = "d:webuserwebdir";
//创建新的应用程序
$iisdir->AppCreate(True) ; //在这里不能 = True;,只能用(True)
//允许父路径,也就是允许.
$iisdir->AspEnableParentPaths = True;
/*应用程序池相关设置*********************************************************/
$appList = New Com ("IIS://Localhost/w3svc/AppPools");
//列出应用程序池的名称
$appList->Name;
//列出应用程序池的状态
$appList->AppPoolState;
//运行状态返回以下几个整数值:
//1代表应用程序池运行状态为“正在启动”
$appList->Status = 1;
//2代表应用程序池运行状态为“已经启动”
$appList->Status = 2;
//3代表应用程序池运行状态为“正在停止”
$appList->Status = 3;
//4代表应用程序池运行状态为“已经停止”
$appList->Status = 4;
//5代表应用程序池运行状态为“正在暂停”
$appList->Status = 5;
//6代表应用程序池运行状态为“已经暂停”
$appList->Status = 6;
//7代表应用程序池运行状态为“正在继续”,就是暂停后的继续运行
$appList->Status = 7;
//-1代表出错
$appList->Status = -1;
/*WinNT用户和密码相关设置*********************************************************/
$usernameobj = New Com("WinNT://iim");
//创建一个系统用户
$user = $usernameobj->Create("user",$UserName);
//设置用户密码
$user->SetPassword($UserPass);
//设置用户全名
$user->FullName = "用户全名";
//设置用户说明
$user->Description = "用户说明";
//设置用户密码永久正确
$user->UserFlags = &H10000
//设置用户下次登入时须变更密码
$user->UserFlags = &H20000
//设置使用者不得变更密码
$user->UserFlags = &H0040
//设置用户帐户暂时停用
$user->UserFlags = &H0002
//以上动作创建一个系统用户
/*执行相关动作*********************************************************/
//执行以上的动作,但在网站运行状态里边的start,stop,pause,continue这四个动作中无须执行->SetInfo();
$Object->SetInfo(); //$Object为你所创建的组件名称
?>
我们用php来控制iis并且,在WEB上创建网站,管理删除等功能哦。<?
# PHP控制站点程序
#
# 编写人:韩湘子
#
# 邮箱:hanxiangzi@gmail.com
#
# MSN:hanxiangzi@gmail.com
#
# QQ:220670
#
# 欢迎大家互相联系讨论
?>
<link href="image/css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-color: #D4D0C8;
}
-->
</style>
<table width="980" border="0" cellpadding="5" cellspacing="1" bgcolor="#000000">
<tr height=26>
<td width="177" bgcolor="#E8E6E1">站点名称</td>
<td width="229" bgcolor="#E8E6E1">绑定域名</td>
<td width="210" bgcolor="#E8E6E1">网站目录</td>
<td width="116" bgcolor="#E8E6E1">标识符</td>
<td width="97" bgcolor="#E8E6E1">站点状态</td>
<td colspan="2" bgcolor="#E8E6E1"><div align="center">管理</div></td>
</tr>
<?php
$LocalHostObject = New Com ("IIS://localhost/w3svc") ;
//删除站点
iF($Opt=="del"){
$LocalHostObject->Delete("IIsWebServer",$ServerID);
echo "<script>window.location='3.php';</script>";
}
//启动和停止站点
iF($Opt=="Status"){
$Site2 = New Com ("IIS://LocalHost/w3svc/".$ServerID);
$Site2->$Status;
}
//创建新站点
iF($Submit){
//创建目录
// mkdir(stripslashes($ServerDir));
//添加用户
$usernameobj = New Com("WinNT://iim");
$user = $usernameobj->Create("user",$ServerComm);
//设置用户名
$user->SetInfo();
//设置密码
$user->SetPassword($ServerComm);
// $user->UserFlags('&H0040');
$user->SetInfo();
$usernameobj1 = New Com("WinNT://iim/".$ServerComm);
$user->Description ="本用户名由iiM在线管理系统创建.";
$user->SetInfo();
#就差一个把用户加载到目录上的权限问题了################################################################################################
//创建站点
$iissite = $LocalHostObject->Create("IIsWebServer",$ServerID);
$aa = explode(",",$ServerBin);
// //先设定站点的基本资料
$iissite->ServerBindings = $aa;
$iissite->ServerComment = $ServerComm;
$iissite->AnonymousUserName = $ServerComm;
$iissite->AnonymousUserPass = $ServerComm;
$iissite->KeyType = "IIsWebServer";
$iissite->EnableDefaultDoc = True;
$iissite->DefaultDoc = "default.htm,default.asp,index.htm,index.html";
$iissite->LogFileDirectory = "d:\";
$iissite->MaxBandwidth = '102400';
$iissite->MaxConnections = '100';
$iissite->LogType = "0";
$iissite->AppIsolated = 0;
$iissite->AuthBasic = False;
$iissite->AuthNTLM = True;
$iissite->HttpErrors = "404,*,FILE,C:WINDOWShelpiisHelpcommon404b.htm";
//加上脚本映射
foreach($scriptmapsubmit as $script){
Switch($script){
Case "asp";
$sc[] = ".asa,C:WINDOWSsystem32inetsrvasp.dll,5";
$sc[] = ".asp,C:WINDOWSsystem32inetsrvasp.dll,5";
break;
Case "php";
$sc[] = ".php,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
$sc[] = ".php3,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
$sc[] = ".php4,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
$sc[] = ".php5,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
$sc[] = ".php6,E:softphp-5.2.3-Win32(1)php5isapi.dll,5";
break;
Case "cgi";
echo "cgi<br>";
break;
Case "aspnet";
echo "asp.net<br>";
break;
Case "html";
echo "html";
break;
}
}
$iissite->ScriptMaps = $sc;
$iissite->SetInfo();
//再设定站点目录
$iisdir = $iissite->Create("IIsWebVirtualDir","ROOT");
$ServerDir1 = stripslashes($ServerDir);
$iisdir->Path = $ServerDir1;
$iisdir->AppCreate(True) ;
$iisdir->AccessRead = True;
$iisdir->EnableDirBrowsing = False;
//允许父路径,也就是允许.
$iisdir->AspEnableParentPaths = True;
$iisdir->AccessScript = True;
$iisdir->AppFriendlyName = "默认应用程序";
$iisdir->SetInfo();
//启动站点
$Site1->Start;
echo "<script>window.location='3.php';</script>";
}
//列出所有网站
ForEach($LocalHostObject as $WebSiteName){
iF($WebSiteName->Class == "IIsWebServer"){
$Site = New Com ("IIS://localhost/w3svc/".$WebSiteName->Name) ;
//站点状态
$SiteStatus1 = $Site->Status ;
Switch($SiteStatus1){
Case "2" ;
$SiteStatus = "<a href=?Opt=Status&Status=stop&ServerID=$Site->Name>正常</a>" ;
break;
Case "6" ;
$SiteStatus = "<a href=?Opt=Status&Status=start&ServerID=$Site->Name><font color=red>暂停</font></a>" ;
break;
Case "4" ;
$SiteStatus = "<a href=?Opt=Status&Status=start&ServerID=$Site->Name><font color=red>停止</font></a>" ;
break;
}
?>
<tr height=26>
<td bgcolor="#F4F3F2" ><?php Echo $Site->ServerComment ; ?></td>
<td bgcolor="#F4F3F2">
<?php
//得出绑定的域名
$BinDings = $Site->ServerBinDings;
ForEach($BinDings as $BinDing){
List($ip, $Port, $Domain) = Explode(":",$BinDing);
Echo $Domain ."<br>";
}
?> </td>
<td bgcolor="#F4F3F2">
<?
//网站目录
$getRootDir = $Site->GetObject("IIsWebVirtualDir","ROOT");
echo $getRootDir->Path;
?></td>
<td bgcolor="#F4F3F2"><?php Echo $Site->Name ; ?></td>
<td bgcolor="#F4F3F2"><?php Echo $SiteStatus ; ?></td>
<td width="40" bgcolor="#F4F3F2"><div align="center"><a href=?Opt=del&ServerID=<?php Echo $Site->Name?>>删除</a></div></td>
<td width="33" bgcolor="#F4F3F2"><div align="center"><a href=33.php?ServerID=<?php Echo $Site->Name ; ?>>管理</a></div></td>
</tr>
<?php
}
}
unset($LocalHostObject);
unset($Site);
unset($Site1);
unset($Site2);
?>
</table>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="0" cellspacing="0" cellpadding="3">
<tr>
<td width="8%">站点名称</td>
<td width="92%"><input type="text" name="ServerComm" /></td>
</tr>
<tr>
<td>站点目录 </td>
<td><input type="text" name="ServerDir" value="F:user"/></td>
</tr>
<tr>
<td>站点ID号 </td>
<td><input type="text" name="ServerID"/></td>
</tr>
<tr>
<td>Serverbin</td>
<td><textarea name="ServerBin" cols="80" rows="5"></textarea></td>
</tr>
<tr>
<td>脚本映射</td>
<td><input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="asp" />
ASP
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="php" />
PHP
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="cgi" />
CGI
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="aspnet" />
ASP.NET
<input name="scriptmapsubmit[]" type="checkbox" id="scriptmapsubmit" value="html" checked="checked" />
HTML</td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Submit" /></td>
<td> </td>
</tr>
</table>
</form>
<?php
header("Cache-Control: public");
header("Accept-Ranges: bytes");
$file = "a.rar";
$filename = "a.rar";
$size=filesize($file);
$size1=$size-1;
//获得字节范围
if(isset($_SERVER['HTTP_RANGE'])) {
list($name, $range) = explode("=",$_SERVER['HTTP_RANGE']);
$length=$size1-$range;
header("HTTP/1.1 206 Partial Content"); //http协议头状态码,表示以部分内容传输
header("Content-Range: bytes ".$range."-".$size1."/".$size);
}else{
$length = $size;
}
header("Content-Length: $length");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$filename);
$fp=fopen($file,"rb");
//设定文件指针位置
fseek($fp,$range);
while(!feof($fp)){
set_time_limit(0);
echo fread($fp,1024);
flush();
ob_flush();
}
fclose($fp);
exit;
?>
<?php
/**
* 作者 于恩水<yuenshui@126.com>
* 支持断点续传下载
* 实例代码:
* $down = new SD_DownLoad();
* $down->Down('E:/iso/MS.Office2003SP1.CHS.iso');
**/
class SD_DownLoad {
/**
* 下载的开始点
*
* @access private
* @var integer
*/
private $mDownStart;
/**
* 文件大小
*
* @access private
* @var integer
*/
private $mFileSize;
/**
* 文件句柄
*
* @access private
* @var integer
*/
private $mFileHandle;
/**
* 文件全路径
*
* @access private
* @var string
*/
private $mFilePath;
/**
* 文件下载时显示的文件名
*
* @access private
* @var string
*/
private $mFileName;
/**
* 构造函数
*
* @access public
* @return void
**/
public function __construct() {
}
/**
* 下载
*
* @param string $pFilePath 文件全路径
* @param string pFileName 文件下载时显示的文件名,缺省为实际文件名
* @access public
* @return void
**/
public function Down($pFilePath, $pFileName = '') {
$this->mFilePath = $pFilePath;
if(!$this->IniFile()) $this->SendError();
$this->mFileName = empty($pFileName) ? $this->GetFileName() : $pFileName;
$this->IniFile();
$this->SetStart();
$this->SetHeader();
$this->Send();
}
/**
* 初始化文件信息
*
* @access private
* @return boolean
**/
private function IniFile() {
if(!is_file($this->mFilePath)) return false;
$this->mFileHandle = fopen($this->mFilePath, 'rb');
$this->mFileSize = filesize($this->mFilePath);
return true;
}
/**
* 设置下载开始点
*
* @access private
* @return void
**/
private function SetStart() {
if (!empty($_SERVER['HTTP_RANGE']) && preg_match("/^bytes=([d]?)-([d]?)$/i", $_SERVER['HTTP_RANGE'], $match)) {
if(empty($match[1])) $this->mDownStart = $match[1];
fseek($this->mFileHandle, $this->mDownStart);
}
else {
$this->mDownStart = 0;
}
}
/**
* 设置http头
*
* @access private
* @return void
**/
private function SetHeader() {
@header("Cache-control: public");
@header("Pragma: public");
Header("Content-Length: " . ($this->mFileSize - $this->mDownStart));
if ($this->mDownStart > 0) {
@Header("HTTP/1.1 206 Partial Content");
Header("Content-Ranges: bytes" . $this->mDownStart . "-" . ($this->mFileSize - 1) . "/" . $this->mFileSize);
}
else {
Header("Accept-Ranges: bytes");
}
@header("Content-Type: application/octet-stream");
@header("Content-Disposition: attachment;filename=" . $this->mFileName);
}
/**
* 获取全路径里的文件名部分
*
* @access private
* @return string
**/
private function GetFileName() {
return basename ($this->mFilePath);
}
/**
* 发送数据
*
* @access private
* @return void
**/
private function Send() {
fpassthru($this->mFileHandle);
}
/**
* 发送错误
*
* @access public
* @return void
**/
public function SendError() {
@header("HTTP/1.0 404 Not Found");
@header("Status: 404 Not Found");
exit();
}
}
?>
第七章(5)面向对象详解_封装性
封装性:就是将对象内部的属性或方法封装在自己的对象内部,在对象内部可以被使用或访问,但在对象的外部或者其它对象里不能使用封装的成员.
封装使用的关键字:private
封装的含义:
1.把对象的全部属性和全部方法结合在一起,形成一个不可分割的独立的单位(对象).
2.信息隐蔽,即尽可能的隐蔽内部细节,对外形成一个边界(或者说对外形成一个屏障),只保留有限的对外的接口,使它与外部发生关系.
第七章(6)面向对象详解_封装时所用的四个常用的方法
带"__"加函数的方法是在某一时刻自动调用的方法.
__get(属性的名称) 直接去调用私有属性的时候调用__get的方法.
__set(1.属性名 2.属性值) 直接给私有属性赋值的时候调用__set的方法.
__isset(属性名称) 判断对象内部私有属性是否存在的时候调用__isset的方法.
__unset(属性名称) 删除对象内部私有属性的时候调用__unset的方法.
第七章(7)面向对象详解_继承
类的继承:继承就是对原有类的扩展.
新扩展的子类:1.class 2.原父类名称 3.extends继承关键字 4.新子类名称.
类的继承就是把父类里面所有的内容都继承到子类,除了私有的属性和方法.
第七章(8)面向对性详解_方法的覆盖和访问
类方法的重载:方法名称要与父类的相同,如要调用父类某方法的全部内容可以在子类方法里使用关键字pr]arent:: 如只调用部分就重写.
访问类型:
private 私有 只能在本类里进行访问.
protected 保护 只能在本类和子类里进行访问.
public 公有 不受限制,在本类,子类和外部都可以进行访问.
第七章(9)面向对象详解_常用的final,static,const关键字
final:只能用来定义类和方法.
作用:使用final定义的类不能被继承.
使用final定义的方法不能被重载覆盖.
static:将属性和方法定义成静态.
static可以修饰属性,也可以修饰方法.
使用static声明的方法里面不能使用非静态成员.
static的作用是只需要在类里面声明一次,此类产生的所有对象都有static修饰过属性和方法,但不会在内存里面反复使用内存,可有效的节约内存.
要访问static定义的属性或方法时使用 类名::定义的属性或方法,或使用felf::定义的属性或方法进行访问,使用对象不能直接进行访问.
const的作用是在类里面定义成员属性为常量.
const只能修饰属性.
const只能在声明的时候初始值.
使用const声明属性不用加$.
要访问const定义的属性使用 类名::定义的属性 进行访问,使用对象不能直接进行访问.
相关文章
- 这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
- 这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
- 这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 这篇文章主要介绍了mybatis的Configuration详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
详解redis desktop manager安装及连接方式
这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15mybatis 返回Integer,Double,String等类型的数据操作
这篇文章主要介绍了mybatis 返回Integer,Double,String等类型的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25- 这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
- 这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
- 最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下...2020-06-30
- 这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
redis setIfAbsent和setnx的区别与使用说明
这篇文章主要介绍了redis setIfAbsent和setnx的区别与使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-04- 这篇文章主要介绍了Redis的Expire与Setex区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
- 本文主要介绍this关键字的几种使用方法,this可以代表当前实例,可以调用其他构造函数,还可以用来构建索引器,这里都有一一举例说明。...2020-06-25
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04- 数据库中的数据删除会分为两种:物理删除 和 逻辑删除,接下来通过本文给大家介绍MyBatis-Plus的物理删除和逻辑删除使用场景分析,感兴趣的朋友一起看看吧...2021-09-25
Springboot如何使用mybatis实现拦截SQL分页
这篇文章主要介绍了Springboot使用mybatis实现拦截SQL分页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-19