从2.2升级到2.4

为了帮助人们升级,我们维护一份描述对现有Apache HTTP Server用户至关重要的信息的文档。这些只是简要说明,您应该能够在新功能文档或src/CHANGES文件中找到更多信息。应用程序和模块开发人员可以在API更新概述中找到API更改的摘要。 本文档描述了服务器行为的变化,这些变化可能要求您更改配置或使用服务器以继续使用2.4,就像您当前使用2.2一样。要利用2.4中的新功能,请参阅新功能文档。 本文档仅描述了从2.2到2.4的变化。如果您从2.0版升级,则还应该查阅升级文档2.0至2.2。 编译时配置更改 运行时配置更改 其他变化 第三方模块 升级时常见的问题 也可以看看 Apache HTTP Server 2.4中的新功能概述 注释 编译时配置更改 编译过程非常类似于2.2版中使用的过程。大多数情况下,您的旧configure命令行(可以在build/config.nice安装的服务器目录中找到)可以使用。默认设置有一些变化。一些细节的变化: 这些模块已被删除:mod_authn_default,mod_authz_default,mod_mem_cache。如果您在2.2中使用mod_mem_cache,请参阅mod_cache_disk2.4。 所有的负载平衡实现已经被移动到独立的,独立的mod_proxy子模块,例如 mod_lbmethod_bybusyness。您可能需要构建并加载配置使用的任何这些内容。 BeOS,TPF以及A / UX,Next和Tandem等较早的平台都已取消平台支持。无论如何,这些被认为是破碎的。 配置:动态模块(DSO)是默认生成的 配置:默认情况下,只加载一组基本的模块。其他LoadModule指令在配置文件中被注释掉。 配置:默认情况下,“最”模块集建成 配置:“真正的”模块集将开发者模块添加到“全部”集 运行时配置更改 授权配置和其他次要配置更改发生了重大变化,可能需要在使用2.4配置文件之前对其进行更改。 授权 任何使用授权的配置文件都可能需要更改。 您应该查看身份验证,授权和访问控制Howto,尤其是Beyond仅授权部分,该部分 解释了控制授权指令应用顺序的新机制。 控制授权模块在与认证用户不匹配时如何响应的指令已被删除:这包括AuthzLDAPAuthoritative,AuthzDBDAuthoritative,AuthzDBMAuthoritative,AuthzGroupFileAuthoritative,AuthzUserAuthoritative和AuthzOwnerAuthoritative。这些指令已经被换成了更具表现力RequireAny, RequireNone和 RequireAll。 如果您使用mod_authz_dbm,则必须移植您的配置以Require dbm-group …代替使用Require group …。 访问控制 在2.2的基础上,客户端的主机名,IP地址,客户端请求的其他特性的访问控制使用的指示做Order,Allow,Deny,和Satisfy。 在2.4中,这种访问控制与使用新模块的其他授权检查相同 mod_authz_host。旧的访问控制成语应该被新的认证机制所取代,尽管为了与旧的配置兼容,mod_access_compat提供了新的模块。 混合旧的和新的指令 混合旧指令一样Order,Allow或Deny以新的希望 Require在技术上是可行的,但不鼓励。mod_access_compat是为支持仅包含旧指令的配置而创建的,以促进2.4升级。请查看下面的示例以更好地了解可能出现的问题。 以下是一些新旧方法可用于执行相同访问控制的示例。 在这个例子中,没有认证,所有请求都被拒绝。 2.2配置:

2.4配置:

在这个例子中,没有认证,所有的请求都是允许的。 2.2配置:

2.4配置:

在以下示例中,不存在身份验证,并且example.org域中的所有主机都被允许访问; 所有其他主机都被拒绝访问。 2.2配置:

2.4配置:

在以下示例中,混合旧指令和新指令会导致意外的结果。 混合旧的和新的指令:不按预期工作

为什么即使配置似乎允许httpd拒绝访问服务器状态?因为mod_access_compat指令优先mod_authz_host于此配置 合并方案中的指令。 这个例子反过来按预期工作: 混合旧的和新的指令:按预期工作

因此,即使混音配置仍然可行,请在升级时尽量避免使用它:或者保留旧的指令,然后在后续阶段迁移到新的指令,或者只是批量迁移所有的指令。 在许多具有身份验证的配置中,其值为ALLSatisfy的缺省值,因此 省略了仅禁用基于主机的访问控制的片段: 2.2配置:

2.4配置:

在身份验证和访问控制有意义结合的配置中,应该迁移访问控制指令。这个例子允许满足两个标准的请求: 2.2配置:

2.4配置:

在身份验证和访问控制有意义结合的配置中,应该迁移访问控制指令。此示例允许符合以下任一条件的请求 2.2配置:

2.4配置:

其他配置更改 如下所述,对于特定配置可能需要其他一些小调整。 MaxRequestsPerChild已更名为 MaxConnectionsPerChild,更准确地描述了它的功能。旧名称仍然受支持。 MaxClients已被重新命名为 MaxRequestWorkers,它更准确地描述了它的功能。对于异步MPM,例如 event,最大客户端数量不等于工作线程数量。旧名称仍然受支持。 该DefaultType 指令不再具有任何效果,除非发出警告,否则使用其他值 none。您需要使用其他配置设置在2.4中进行替换。 AllowOverride现在默认为None。 […]

龙生   28 May 2018
View Details

windows下配置apache+php环境

PHP安装 由于windows下php扩展5.6的多余7.0,故以php5.6为开发环境。如果对扩展要求不高,可以使用php7,安装过程类似。 约定: 环境安装目录:

  下载 下载地址: http://php.net/ windows版下载地址: http://windows.php.net/download 官网里Windows的版本有很多。选择哪个版本呢? 如果你的PHP应用程序以FastCGI方式运行,请选择Non-Thread Safe (NTS) 版本; 如果你的PHP应用程序和Apache一起,请选择 Thread Safe (TS) 版本。 本文用的apache+php组合,所以选择ts(Thread Safe)版本。根据操作系统选择x64或者x86。 大多数版本的PHP使用VC9, VC11 or VC14 (Visual Studio 2008, 2012 or 2015分别编译)进行编译的,所以你电脑上需要安装VC运行环境。 电脑需要VC运行环境: VC9 x86 :http://www.microsoft.com/en-us/download/details.aspx?id=5582 VC9 x64 :http://www.microsoft.com/en-us/download/details.aspx?id=15336 VC11 x86 or x64:http://www.microsoft.com/en-us/download/details.aspx?id=30679 VC14 x86 or x64 :http://www.microsoft.com/en-us/download/details.aspx?id=48145 配置PHP 本文以php-5.6.22-Win32-VC11-x86.zip为例。 下载后解压到D:\phpsetup\php\php-5.6.22-Win32-VC11-x86目录。 复制一份php.ini-development文件为php.ini。 需要修改以下地方: 更改自定义扩展目录。 找到

  更改为

  提示:与apache搭配使用需要写绝对位置。否则扩展加载不了。 开启扩展 往下看,再找到:

  去掉部分注释:

  设置默认时区

  设置ssl(可选)

  注意是绝对路径。 添加自定义扩展

  注意,需要下载对应版本的扩展: 如php_redis-2.2.7-5.6-ts-vc11-x86 区分ts,x86。 下载地址 http://pecl.php.net/package/redis/ http://pecl.php.net/package/memcache http://pecl.php.net/package/SeasLog http://pecl.php.net/package/xdebug http://pecl.php.net/package/yar […]

龙生   28 May 2018
View Details

AH00072: make_sock: could not bind to address [::]:443 Aphache启动报443端口占用

给eclipse安装php插件,在start XAMPP的时候报错  : 通常每个套接字地址(协议/网络地址/端口)只允许使用一次 。: AH00072: make_sock: could not bind to address [::]:443 典型的端口占用 方法1:查找端口占用 Html代码   D:\server\xampp\apache\bin>netstat -ano|findstr "443"   TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       3120   TCP    199.10.33.30:54312     202.173.27.250:443     TIME_WAIT       0   TCP    199.10.33.30:54313     216.219.120.244:443    TIME_WAIT       0     查看进程占用程序 Html代码   D:\server\xampp\apache\bin>tasklist|findstr "3120" vmware-hostd.exe              3120 Services                   0     55,356 K   可见433由vmare占用,根据“先来后到”的原则,那么只有更改apache的这个端口了。 解决方法 进入Apache的安装目录,搜索httpd-ssl.conf,右击文本打开。寻找443替换成其他不常用的端口号,比如442。接下来就可以正常启动Apache了。 方法2:直接关闭Apache的SSL模块, 反正暂时还用不到,\xampp\apache\confhttpd.conf文件,注释171行#LoadModule ssl_module modules/mod_ssl.so 和539行#Include conf/extra/httpd-ssl.conf   from:https://blog.csdn.net/u012185875/article/details/71639887

龙生   28 May 2018
View Details

PHP获取当前时间的毫秒数(yyyyMMddHHmmssSSS)

1 second = 1000 millisecond = 1000,000 microsecond = 1000,000,000 nanosecond php的毫秒是没有默认函数的,但提供了一个microtime()函数,该函数返回包含两个元素,一个是秒数,一个是小数表示的毫秒数,借助此函数,可以很容易定义一个返回毫秒数的函数,例如:

需要注意,在32位系统中php的int最大值远远小于毫秒数,所以不能使用int类型,而php中没有long类型,所以只好使用浮点数来表示。 转载:http://crystalwiner.iteye.com/blog/1567514

龙生   27 May 2018
View Details

PHP rand() 函数

定义和用法 rand() 函数返回随机整数。 语法

参数 描述 min,max 可选。规定随机数产生的范围。 说明 如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。例如,想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。 提示和注释 注释:在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX 的数了,或者考虑用 mt_rand() 来替代它。 注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。 注释:在 3.0.7 之前的版本中,max 的含义是 range 。要在这些版本中得到和上例相同 5 到 15 的随机数,简短的例子是 rand (5, 11)。 例子 本例会返回一些随机数:

输出:

from:http://www.w3school.com.cn/php/func_math_rand.asp

龙生   27 May 2018
View Details

php中的四舍五入函数代码(floor函数、ceil函数、round与intval)

floor函数和ceil函数互相搭配起来可以使php 处理的数据更加真实可靠。 一、先来看floor函数: 语法: float floor ( float value ) 说明: 返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。 floor() 例子 1 1 2 3 4 <?php  echo floor(1.6); // will output "1"  echo floor(-1.6); // will output "-2" ?> floor() 例子 2 1 2 3 4 5 6 7 8 <?php echo(floor(0.60)); echo(floor(0.40)); echo(floor(5)); echo(floor(5.1)); echo(floor(-5.1)); echo(floor(-5.9)) ?> 输出: 0 0 5 5 -6 -6 二、ceil函数: 语法: float ceil ( float value ) 说明: 返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。 […]

龙生   27 May 2018
View Details

php中生成标准uuid(guid)的方法

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台 会提供生成UUID的API。UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以 下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相 同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于 UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。 在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12) <?php function guid(){ if (function_exists('com_create_guid')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } } echo guid(); ?>   from:https://blog.csdn.net/qq3559727/article/details/51752478

龙生   27 May 2018
View Details

php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数(转)

//获取浏览器 function getBrowse() { global $_SERVER; $Agent = $_SERVER['HTTP_USER_AGENT']; $browseinfo="; if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){ $browseinfo = 'Netscape Navigator'; } if(ereg('Opera', $Agent)) { $browseinfo = 'Opera'; } if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){ $browseinfo = 'Internet Explorer'; } if(ereg('Chrome', $Agent)){ $browseinfo="Chrome"; } if(ereg('Safari', $Agent)){ $browseinfo="Safari"; } if(ereg('Firefox', $Agent)){ $browseinfo="Firefox"; } return $browseinfo; } //获取ip function getIP () { global $_SERVER; if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip = getenv('REMOTE_ADDR'); } else { $ip = $_SERVER['REMOTE_ADDR']; } […]

龙生   27 May 2018
View Details

PHP Cookies

cookie 常用于识别用户。 什么是 Cookie? cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 如何创建 cookie? setcookie() 函数用于设置 cookie。 注释:setcookie() 函数必须位于 <html> 标签之前。 语法

例子 在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。 如何取回 Cookie 的值? PHP 的 $_COOKIE 变量用于取回 cookie 的值。 在下面的例子中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:

在下面的例子中,我们使用 isset() 函数来确认是否已设置了 cookie:

如何删除 cookie? 当删除 cookie 时,您应当使过期日期变更为过去的时间点。 删除的例子:

如果浏览器不支持 cookie 该怎么办? 如果您的应用程序涉及不支持 cookie 的浏览器,您就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。 下面的表单在用户单击提交按钮时向 "welcome.php" 提交了用户输入:

取回 "welcome.php" 中的值,就像这样:

 from:http://www.w3school.com.cn/php/php_cookies.asp

龙生   27 May 2018
View Details
1 188 189 190 432