﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-丁克设计,为设计而生</title><link>http://www.blogjava.net/DreamFight/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 15:02:56 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 15:02:56 GMT</pubDate><ttl>60</ttl><item><title>Windows下PHP环境安装具体步骤(PHP+Msql+Apache)</title><link>http://www.blogjava.net/DreamFight/articles/349237.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Thu, 28 Apr 2011 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/349237.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/349237.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/349237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/349237.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/349237.html</trackback:ping><description><![CDATA[<h2>Windows下<strong>PHP环境</strong>安装包括三步：</h2>
<h2><a href="http://www.blogjava.net/DreamFight/articles/349237.html#apache">Windows下<strong>PHP环境</strong>安装，第一步：Apache安装</a></h2>
<h2><a href="http://www.blogjava.net/DreamFight/articles/349237.html#php">Windows下<strong>PHP环境</strong>安装，第二步：PHP安装</a></h2>
<h2><a href="http://www.blogjava.net/DreamFight/articles/349237.html#mysql">Windows下<strong>PHP环境</strong>安装，第三步：Mysql安装</a></h2>
<br />
<h3>Windows下<strong>PHP环境</strong>安装，第一步：Apache安装</h3>
<p>（注意事项:安装过程，任何目录和文件名都不要使用空格，不要使用D:"Program Files 而要使用D:"ProgramFiles,目录名不要包含空格，否则下面设置php会出错）<br />
本次安装目录为D:"PHPServer"<br />
1. apache_2.2.3-win32-x86-no_ssl.msi<br />
Apache服务器软件，我下载的是win版本，2.0系列的配置都是相似的。</p>
<p>Windows下<strong>PHP环境</strong>安装，第一步：Apache安装图文介绍：</p>
<p>1、双击apache_2.2.10-win32-x86-no_ssl.msi将会打开如下界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第一步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache01.jpg" /></p>
<p>2、点击Next进入下一个界面</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第二步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache02.jpg" /></p>
<p>这里选择 I accept the terms in the license agreement (翻译：我接受许可协议中的条款)</p>
<p>3、选中后点击Next进入下一个界面（这是对Apache的一个大致的介绍，请直接点击下一步）</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第三步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache03.jpg" /></p>
<p>4、选中后点击Next进入下一个界面（这是对Apache的一个大致的介绍，请直接点击下一步）</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第四步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache04.jpg" /></p>
<p>这里他要求你填写你的服务器的基本信息，这里可以随便填写。</p>
<p>5、选中后点击Next进入下一个界面（这是让你选择自定义安装或者是典型安装，这里我们选择Custom自定义安装）</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第五步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache05.jpg" /></p>
<p>5、选中后点击Next进入下一个界面（这是让你选择自定义安装或者是典型安装，这里我们选择Custom自定义安装）</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第六步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache06.jpg" /></p>
<p>选择您的安装位置然后点击OK,进入下一个界面，直接点击Next,进入安装，再直接点击Install界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第七步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache07.jpg" /></p>
<p>5、当他复制完文件后会对系统做一个基本的配置，正式完成时如下界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Apache安装第八步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apache08.jpg" /></p>
<p>安装结束后，apache自动运行，在浏览器里输入<a href="http://127.0.0.1/">http://127.0.0.1</a>是
不是显示出了默认的网页，如果出现一个默认的主页如果你不希望看到这个页面，可以到D:"PHPServer"Apache2"conf目录下找到
httpd.conf 打开编辑，并查找 DocumentRoot"在2.0系列的版本中，找到一个DocumentRoot"
，把引号内的路径改为你自己的路径就可以了，比如 DocumentRoot &#8220;F:/WEB_PHP&#8221; 现在默认的根目录就是
D:/HPServer/Apache2.2/htdocs
注意这里用的是"/",我的现在改成了：F:/WEB_PHP,还有一处是：&lt;Directory
"D:"PHPServer"Apache2"conf"&gt;，这里也要改的。</p>
<p> 注意问题：当你安装完成后很多情况下Apache是没有运行的，在你电脑右下角的地方显示<img alt="apache没有启动" src="http://www.nbexpo2010.com/uploadfile/2011/0314 /apacheError.jpg" height="36" width="41" />着表明你的Apache没有启动。这种情况有可能是你的 apache的默认端口80端口暂时被其他软件占用造成的。你只需要重启你的电脑就可以了。正常状态为：<img alt="apache正常启动" src="http://www.nbexpo2010.com/uploadfile/2011/0314/apacheOk.jpg"  &="" gt;。="" /></p>
<p>到现在为止Windows下<strong>PHP环境</strong>安装，第一步：Apache安装应经完成。<a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">返回头部&lt; /a&gt;</a></p>
<h3><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">Windows下<strong>PHP环境</strong>安装，第一步：PHP安装</a></h3>
<a href="http://www.blogjava.net/DreamFight/articles/349237.html#home"><br />
</a>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">一、安装php5.2<br />
下载过来的php-5.2-Win32一般是个zip格式的压缩包，解压缩到D:"PHPServer目录下，并使文件都在一个文件夹下，改文件夹名为
php5 ,这样方便接下来的工作。现在我们看到 D:"PHPServer下面已经有两个文件夹了, 一个是
apache2(安装apache2.2.3自动生成的一个文件夹) 另一个是 php5
我的方式是每一个软件一个文件夹,并且这些文件夹在同一目录下, 这样便于查找。</a></p>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">二、我们现在开始配置apache使它支持php5。<br />
1、首先,找到 D:"PHPServer"php5 目录下的php.ini-dist 重命名为php.ini 并复制到C:"windows 目录下,<br />
2、复制 D:"PHPServer"php5 目录下的php5ts.dll,libmysql.dll(&nbsp;加载php和apache的动态链接库)到C:"windows"system32<br />
3、复制 D:"PHPServer"php5"ext 目录下的php_gd2.dll，php_mysql.dll 到C:"windows"system32</a></p>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">也可先做第一步，然后把以下命令COPY为BAT文件<br />
@echo off<br />
copy libmysql.dll %windir%"system32"<br />
copy php5ts.dll %windir%"system32"<br />
copy ext/php_gd2.dll %windir%"system32"<br />
copy ext/php_mysql.dll %windir%"system32"<br />
copy php.ini %windir%"<br />
放在php5的根目录运行</a></p>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">接下去,我们开始配置 D:"PHPServer"Apache"Apache2"conf 下的
httpd.conf文件,打开apache配置文件httpd.conf:开始/程序/Apache HTTP Server/Configure
Apache Server/Edit....<br />
1、找到DirectoryIndex index.html 在后面加入 index.htm index.html.var
index.php，这样的目的是让apache服务器能够解析哪种语言放在越靠前的优先访问。服务器默认的是.html的文件，如果这里你修改了，那么
要重启服务器。<br />
2、模块化安装配置<br />
找到 #LoadModule ssl_module modules/mod_ssl.so 这行,在此行后加入一行<br />
LoadModule php5_module D:/PHPServer/php5/php5apache2_2.dll(下面有说明)<br />
其中D:/PHPServer/php5/ 为你php目录<br />
3、找到 AddType application/x-gzip .gz .tgz 这行,加入如下即可<br />
AddType application/x-httpd-php .php<br />
4、验证Apache整合PHP<br />
新建一个PHP文件：phpinfo.php，放到你设置的Apache的WEB目录，我设置的是F:/WEB_PHP。<br />
&lt;?echo phpinfo();?&gt;</a></p>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">如果输出类似于一下的界面：</a></p>
<a href="http://www.blogjava.net/DreamFight/articles/349237.html#home"><img alt="php安装后成功界面" src="http://www.nbexpo2010.com/uploadfile/2011/0314/php01.jpg" />
</a>
<p><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home"> 这样说明你的apache与php的整合成功！</a><a href="http://www.blogjava.net/DreamFight/articles/349237.html#home">返回头部</a></p>
<h3>Windows下<strong>PHP环境</strong>安装，第三步：Mysql安装</h3>
<p>一、Mysql安装。</p>
<p>1、打开Mysql文件夹中的setup.ex出现如下界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第一步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql01.jpg" /></p>
<p>2、 直接点击Next进入下一个界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第二步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql02.jpg" /></p>
<p>这是让你选择安装的类型。</p>
<p>Typical为典型安装，这个是Mysql推荐的一种安装方式，他满足了大部分的用户需求，你可以选择这个。</p>
<p>Complete为完全安装它会把Mysql的全部功能都安装，但是他会占用大量的内存资源，如果你不是高级用户这里可以不选。</p>
<p>Custom为自定义安装，你可以选择或取消你要安装的功能，并且可以自定义你的安装目录，这里我们选择Custom。</p>
<p>单击Next出现下一个界面：</p>
<p>3、在这个界面里我们其他不要改动，直接选择你的安装目录：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第三步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql03.jpg" /></p>
<p>4、然后点击ok,进入下一个界面直接点击Install。进行安装，然后会出现如下界面：</p>
<p>这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第四步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql04.jpg" /></p>
<p>5、一般不需要了，点选&#8220;Skip Sign-Up&#8221;，按&#8220;Next&#8221;略过此步骤：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第五步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql05.jpg" /></p>
<p>现在软件安装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将
&#8220;Configure the Mysql Server now&#8221;前面的勾打上，点&#8220;Finish&#8221;结束软件的安装并启动mysql配置向导</p>
<p>6、这个界面是Mysql的配置界面：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第六步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql06.jpg" /></p>
<p>7、这个界面是让您选择配置方式，&#8220;Detailed Configuration（手动精确配置）&#8221;、&#8220;Standard Configuration（标准配置）&#8221;，我们选择&#8220;Detailed Configuration&#8221;，方便熟悉配置过程：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第七步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql07.jpg" /></p>
<p>8、这个界面是让您选择服务器类型，&#8220;Developer Machine（开发测试类，mysql占用很少资源）&#8221;、&#8220;Server
Machine（服务器类型，mysql占用较多资源）&#8221;、&#8220;Dedicated MySQL Server
Machine（专门的数据库服务器，mysql占用所有可用资源）&#8221;，大家根据自己的类型选择了，一般选&#8220;Server
Machine&#8221;，不会太少，也不会占满：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第八步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql08.jpg" /></p>
<p>9、点击Next进入以下界面这里是让您选择mysql数据库的大致用途，&#8220;Multifunctional
Database（通用多功能型，好）&#8221;、 &#8220;Transactional Database
Only（服务器类型，专注于事务处理，一般）&#8221;、&#8220;Non- Transactional Database
Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-
transactional），随自己的用途而选择了，我这里选择&#8220;Transactional Database Only&#8221;，按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第九步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql09.jpg" /></p>
<p>10、这里是对InnoDB
Tablespace进行配置，就是为InnoDB数据库文件选择一个存储空间，如果修改了，要记住位置，重装的时候要选择一样的地方，否则可能会造成数
据库损坏，当然，对数据库做个备份就没问题了，这里不详述，我这里没有修改，使用用默认位置，直接按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql10.jpg" /></p>
<p>11、这里是选择您的网站的一般mysql访问量，同时连接的数目，&#8220;Decision Support(DSS)/OLAP（20个左右）&#8221;、
&#8220;Online Transaction Processing(OLTP)（500个左右）&#8221;、&#8220;Manual
Setting（手动设置，自己输一个数）&#8221;，我数目，&#8220;Decision
Support(DSS)/OLAP&#8221;，自己的服务器，应该够用了，按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十一步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql11.jpg" /></p>
<p>12、是否启用TCP/IP连接，设定端口，如果不启用，就只能在自己的机器上访问mysql数据库了，我这里启用，把前面的勾打
上，Port&nbsp;Number：3306，在这个页面上，您还可以选择&#8220;启用标准模式&#8221;（Enable&nbsp;Strict&nbsp;Mode），这样MySQL就不会允
许细小的语法错误，如果您还是个新手，我建议您取消标准模式以减少麻烦，但熟悉MySQL以后，尽量使用标准模式，因为它可以降低有害数据进入数据库的可
能性，按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十二步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql12.jpg" /></p>
<p>13、这个比较重要，就是对mysql默认数据库语言编码进行设置，第一个是西文编码，第二个是多字节的通用utf8编码，都不是我们通用的编码，
这里选择第三个，然后在Character
Set那里选择或填入&#8220;gbk&#8221;，当然也可以用&#8220;gb2312&#8221;，区别就是gbk的字库容量大，包括了gb2312的所有汉字，并且加上了繁体字、和其它
乱七八糟的字&#8212;&#8212;使用mysql的时候，在执行数据操作命令之前运行一次&#8220;SET NAMES
GBK;&#8221;（运行一次就行了，GBK可以替换为其它值，视这里的设置而定），就可以正常的使用汉字（或其它文字）了，否则不能正常显示汉字，按
&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十三步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql13.jpg" /></p>
<p>14、选择是否将mysql安装为windows服务，还可以指定Service Name（服务标识名称），是否将mysql的bin目录加入到
Windows PATH（加入后，就可以直接使用bin下的文件，而不用指出目录名，比如连接，&#8220;mysql.exe -uusername
-ppassword;&#8221;就可以了，不用指出mysql.exe的完整地址，很方便），我这里全部打上了勾，Service
Name不变，按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十四步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql14.jpg" /></p>
<p>16、一步询问是否要修改默认root用户（超级管理）的密码（默认为空），&#8220;New root
password&#8221;如果要修改，就在此填入新密码（如果是重装，并且之前已经设置了密码，在这里更改密码可能会出错，请留空，并将&#8220;Modify
Security Settings&#8221;前面的勾去掉，安装配置完成后另行修改密码），&#8220;Confirm（再输一遍）&#8221;内再填一次，防止输错。
&#8220;Enable root access from remote
machines（是否允许root用户在其它的机器上登陆，如果要安全，就不要勾上，如果要方便，就勾上它）&#8221;。 最后&#8220;Create An
Anonymous
Account（新建一个匿名用户，匿名用户可以连接数据库，不能操作数据，包括查询）&#8221;，一般就不用勾了，设置完毕，按&#8220;Next&#8221;继续：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十五步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql15.jpg" /></p>
<p>17、确认设置无误，如果有误，按&#8220;Back&#8221;返回检查，按&#8220;Execute&#8221;使设置生效：</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十六步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql16.jpg" /></p>
<p>18、设置完毕，按&#8220;Finish&#8221;结束mysql的安装与配置。</p>
<p><img alt="Windows 下&lt;strong&gt;PHP环境&lt;/strong&gt;安装Mysql安装第十七步" src="http://www.nbexpo2010.com/uploadfile/2011/0314/mysql17.jpg" /></p>
<p>注意：</p>
<p>这里有一个比较常见的错误:<br />
<br />
1、安装mysql出现write&nbsp;configuration&nbsp;file通不过，比如：后面的提示是
configuration&nbsp;file&nbsp;template&nbsp;D:"PHPServer"Mysql5.0"my-
template.ini&nbsp;could&nbsp;not&nbsp;be&nbsp;processed&nbsp;and&nbsp;written&nbsp;to&nbsp;D:"PHPServer"Mysql5.0"my.ini.error&nbsp;code-1<br />
<br />
可能原因：安装路径带有中文。<br />
<br />
解决办法：换到另外全部是英文和数字的目录安装应该就正常了。<br />
<br />
2、不能&#8220;Start&nbsp;service&#8221;<br />
<br />
可能原因：一般出现在以前有安装mysql的服务器上。<br />
<br />
解 决办法：先保证以前安装的mysql服务器彻底卸载掉了；不行的话，检查是否按上面一步所说，之前的密码是否有修改，照上面的操作；如果依然不行，将
mysql安装目录下的data文件夹备份，然后删除，在安装完成后，将安装生成的data文件夹删除，备份的data文件夹移回来，再重启mysql服
务就可以了，这种情况下，可能需要将数据库检查一下，然后修复一次，防止数据出错。</p>
<p>至此Mysql的安装已经完成。</p>
<p><strong>为了让php支持mysql,需要做如下操作:<br />
</strong><br />
1、修改c:"windows下的php.ini文件, 将 extension_dir = "./"修改为extension_dir =
"d:"PHPServer"php5"ext", 将register_globals = Off改为On;
将;extension=php_mysql.dll前面的引号";"去掉。<br />
2、复制php目录下的libmysql.dll文件到system32下<br />
<br />
测试MySQL,在Web根目录下建立testdb.php文件内容如下：<br />
&lt;?php<br />
$link=mysql_connect('localhost','root','123456');<br />
if(!$link) echo "fail";<br />
else echo "success";<br />
mysql_close();<br />
?&gt;</p>
<p><strong>安装phpMyAdmin:</strong><br />
将phpMyadmin解压到apache的网页目录,为了方便后序操作将文件夹重命名为pma.</p>
<p>PHPMyAdmin配置<br />
在libraries"config.default.php中<br />
$cfg['Servers'][$i]['user']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'root';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // MySQL user<br />
$cfg['Servers'][$i]['password']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'your password';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // MySQL password (only needed<br />
加入用户名和密码</p>
<p><br />
注意事项<br />
装了mysql后外部不能连接<br />
打开XP防火墙的3306端口,允许外部访问.当然如果你装了其他的防火墙也要打开此端口.<br />
<br />
mysqlfront 不能连接的问题,报1251错误<br />
在本机用其他工具和命令行都可以连, 在另外一台linux上也可以连,将加密方式改为了old_password也不行,但是今天来开机发现可以连了.或许是要重启以下吧,呵呵.<br />
<br />
进入phpMyAdmin时, 出现 &#8220;无法载入 mysql 扩展，请检查 PHP 配置&#8221;。这里或许是显示的乱码,你要在IE的编码中选择简体中文就会看到.<br />
解决办法就是上面说的要让php支持mysql,设置扩展文件的的路径,打开扩展项.</p>
<p>进入phpMyAdmin的管理页面以后,网页下方出现mbstring的警告,<br />
解决:在php.ini中将此扩展打开,将;extension=php_mbstring.dll前面的引号去掉即可</p>
<p> 至此Windows下<strong>PHP环境</strong>安装就全部安装完成了。<a href="http://www.blogjava.net/DreamFight/articles/349237.html#home"><br /></a></p>
<a href="http://www.blogjava.net/DreamFight/articles/349237.html#home"></a><img src ="http://www.blogjava.net/DreamFight/aggbug/349237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2011-04-28 22:02 <a href="http://www.blogjava.net/DreamFight/articles/349237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>php正则表达式</title><link>http://www.blogjava.net/DreamFight/articles/339704.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Fri, 03 Dec 2010 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/339704.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/339704.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/339704.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/339704.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/339704.html</trackback:ping><description><![CDATA[<div class="sum">
<ul class="summary">
    PHP正则表达式，作为一种快速、便捷的处理字符串的工具，在各种编程语言中都有着广泛的用途，通过在PHP中的一些使用，下面记录一下关于PHP正则表达式的一些相关技巧。
</ul>
</div>
<p>PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高，因此如何更好的使用PHP正则表达式需要综合考虑</p>
<p>我的PHP正则入门，是起源于网上的一篇文章[1]，这篇文章由浅入深的阐述了PHP正则表达式使用的方法，我觉得是一个很好的入门材料，不过学成
还是要靠个人，在使用的过程中，还是会不断地忘记，因此反反复复的阅读了这篇文章有四五遍，对于其中一些比较困难的知识点，甚至要用很久才能消化，但是只
要能见坚持着看完，你会发现自己对于正则的运用能力就会显著提高。51CTO编辑推荐《<a href="http://developer.51cto.com/art/200810/94162.htm"><span style="color: #0000ff;">PHP开发基础入门</span></a>》</p>
<p><strong>PHP正则表达式的定义：</strong></p>
<p>用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。</p>
<p>PHP中的正则函数：</p>
<p>PHP中有两套正则函数，两者功能差不多，分别为：</p>
<p>一套是由PCRE（Perl Compatible Regular Expression）库提供的。使用&#8220;preg_&#8221;为前缀命名的函数；</p>
<p>一套由POSIX（Portable Operating System Interface of Unix ）扩展提供的。使用以&#8220;ereg_&#8221;为前缀命名的函数；（POSIX的正则函数库，自PHP 5.3以后，就不在推荐使用，从PHP6以后，就将被移除）</p>
<p>由于POSIX正则即将推出历史舞台，并且PCRE和perl的形式差不多，更利于我们在perl和php之间切换，所以这里重点介绍PCRE正则的使用。</p>
<p><strong>PCRE正则表达式</strong></p>
<p>PCRE全称为Perl Compatible Regular Expression，意思是Perl兼容正则表达式。 </p>
<p>在PCRE中，通常将模式表达式（即正则表达式）包含在两个反斜线&#8220;/&#8221;之间，如&#8220;/apple/&#8221;。</p>
<p>正则中重要的几个概念有：元字符、转义、模式单元（重复）、反义、引用和断言，这些概念都可以在文章[1]中轻松的理解和掌握。</p>
<p><strong>常用的元字符(Meta-character)：</strong></p>
<p>元字符&nbsp;&nbsp;&nbsp;&nbsp; 说明 </p>
<p>\A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 匹配字符串串首的原子 </p>
<p>\Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 匹配字符串串尾的原子 </p>
<p>\b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 匹配单词的边界&nbsp;&nbsp;&nbsp;&nbsp; /\bis/&nbsp;&nbsp; 匹配头为is的字符串&nbsp;&nbsp; /is\b/&nbsp;&nbsp; 匹配尾为is的字符串&nbsp;&nbsp; /\bis\b/ 定界 </p>
<p>\B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 匹配除单词边界之外的任意字符&nbsp;&nbsp; /\Bis/&nbsp;&nbsp; 匹配单词&#8220;This&#8221;中的&#8220;is&#8221;</p>
<p>\d&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个数字；等价于[0-9] </p>
<p>\D&nbsp;&nbsp;&nbsp;&nbsp; 匹配除数字以外任何一个字符；等价于[^0-9] </p>
<p>\w&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个英文字母、数字或下划线；等价于[0-9a-zA-Z_] </p>
<p>\W&nbsp;&nbsp;&nbsp;&nbsp; 匹配除英文字母、数字和下划线以外任何一个字符；等价于[^0-9a-zA-Z_] </p>
<p>\s&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个空白字符；等价于[\f\t\v] </p>
<p>\S&nbsp;&nbsp;&nbsp;&nbsp; 匹配除空白字符以外任何一个字符；等价于[^\f\t\v] </p>
<p>\f&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个换页符等价于 \x0c 或 \cL </p>
<p>\n&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个换行符；等价于 \x0a 或 \cJ </p>
<p>\r&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个回车符等价于\x0d 或 \cM </p>
<p>\t&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个制表符；等价于 \x09\或\cl </p>
<p>\v&nbsp;&nbsp;&nbsp;&nbsp; 匹配一个垂直制表符；等价于\x0b或\ck </p>
<p>\oNN&nbsp;&nbsp; 匹配一个八进制数字 </p>
<p>\xNN&nbsp;&nbsp; 匹配一个十六进制数字 </p>
<p>\cC&nbsp;&nbsp;&nbsp; 匹配一个控制字符</p>
<p>模式修正符（Pattern Modifiers）： </p>
<p>模式修正符在忽略大小写、匹配多行中使用特别多，掌握了这一个修正符，往往能解决我们遇到的很多问题。</p>
<p>i&nbsp;&nbsp;&nbsp;&nbsp; －可同时匹配大小写字母 </p>
<p>M&nbsp;&nbsp;&nbsp;&nbsp; －将字符串视为多行 </p>
<p>S&nbsp;&nbsp;&nbsp;&nbsp; －将字符串视为单行，换行符做普通字符看待，使&#8220;.&#8221;匹配任何字符 </p>
<p>X&nbsp;&nbsp;&nbsp;&nbsp; －模式中的空白忽略不计&nbsp;&nbsp;&nbsp; </p>
<p>U&nbsp;&nbsp;&nbsp;&nbsp; －匹配到最近的字符串 </p>
<p>e&nbsp;&nbsp;&nbsp;&nbsp; －将替换的字符串作为表达使用 </p>
<p>格式：/apple/i匹配&#8220;apple&#8221;或&#8220;Apple&#8221;等，忽略大小写。&nbsp;&nbsp;&nbsp;&nbsp; /i</p>
<p>PCRE的模式单元：</p>
<p>//1 提取第一位的属性 </p>
<p>/^\d{2} ([\W])\d{2}\\1\d{4}$匹配&#8220;12-31-2006&#8221;、&#8220;09/27/1996&#8221;、&#8220;86 01
4321&#8221;等字符串。但上述正则表达式不匹配&#8220;12/34-5678&#8221;的格式。这是因为模式&#8220;[\W]&#8221;的结果&#8220;/&#8221;已经被存储。下个位置&#8220;\1&#8221;引用
时，其匹配模式也是字符&#8220;/&#8221;。</p>
<p>当不需要存储匹配结果时使用非存储模式单元&#8220;（？：）&#8221; </p>
<p>例如/(?:a|b|c)(D|E|F)\\1g/ 将匹配&#8220;aEEg&#8221;。在一些正则表达式中，使用非存储模式单元是必要的。否则，需要改变其后引用的顺序。上例还可以写成/（a|b|c）(C|E|F)\2g/。</p>
<p>PCRE正则表达式函数：</p>
<pre>
<ol class="dp-c">
    <li class="alt"><span><span>preg_match()和preg_match_all() &nbsp;</span></span></li>
    <li><span>preg_quote() &nbsp;</span></li>
    <li class="alt"><span>preg_split() &nbsp;</span></li>
    <li><span>preg_grep() &nbsp;</span></li>
    <li class="alt"><span>preg_replace()&nbsp;</span></li>
</ol>
</pre>
<p>函数的具体使用，我们可以通过PHP手册来找到，下面分享一些平时积累的正则表达式：</p>
<p>匹配action属性&nbsp;</p>
<pre>
<ol class="dp-c">
    <li class="alt"><span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">''</span></span><span>; &nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">''</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;preg_match_all(</span><span class="string"><span style="color: #0000ff;">'/\s+action=\"(?!http:)(.*?)\"\s/'</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>); &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;print_r(</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>);&nbsp;</span></li>
</ol>
</pre>
<p>在正则中使用回调函数 </p>
<pre>
<ol class="dp-c">
    <li class="alt"><span><span class="comment"><span style="color: #008200;">/** </span></span>&nbsp;</span></li>
    <li><span><span class="comment"><span style="color: #008200;">&nbsp;&nbsp;&nbsp;*&nbsp;replace&nbsp;some&nbsp;string&nbsp;by&nbsp;callback&nbsp;function </span></span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment"><span style="color: #008200;">&nbsp;&nbsp;&nbsp;* </span></span>&nbsp;</span></li>
    <li><span><span class="comment"><span style="color: #008200;">&nbsp;&nbsp;&nbsp;*/</span></span><span>&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword"><strong><span style="color: #006699;">function</span></strong></span><span>&nbsp;callback_replace()&nbsp;{ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars"><span style="color: #dd0000;">$url</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">'http://esfang.house.sina.com.cn'</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">''</span></span><span>; &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>&nbsp;=&nbsp;preg_replace&nbsp;(&nbsp;</span><span class="string"><span style="color: #0000ff;">'/(?&lt;=\saction=\")(?!http:)(.*?)(?=\"\s)/e'</span></span><span>,&nbsp;</span><span class="string"><span style="color: #0000ff;">'search(\$url,&nbsp;\\1)'</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>&nbsp;); &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;} &nbsp;</span></li>
    <li><span>&nbsp;&nbsp; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword"><strong><span style="color: #006699;">function</span></strong></span><span>&nbsp;search(</span><span class="vars"><span style="color: #dd0000;">$url</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>){ &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword"><strong><span style="color: #006699;">return</span></strong></span><span>&nbsp;</span><span class="vars"><span style="color: #dd0000;">$url</span></span><span>&nbsp;.&nbsp;</span><span class="string"><span style="color: #0000ff;">'/'</span></span><span>&nbsp;.&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;</span></li>
</ol>
</pre>
<p>带断言的正则匹配</p>
<pre>
<ol class="dp-c">
    <li class="alt"><span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">''</span></span><span>; &nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>&nbsp;=&nbsp;</span><span class="string"><span style="color: #0000ff;">'xxxxxx.com.cn&nbsp;<strong>bold&nbsp;font</strong>&nbsp;
    <p>paragraph&nbsp;text</p>
    '</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;preg_match_all&nbsp;(&nbsp;</span><span class="string"><span style="color: #0000ff;">'/(?&lt;=&lt;(\w{1})&gt;).*(?=&lt;\/\1&gt;)/'</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$str</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>&nbsp;); &nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string"><span style="color: #0000ff;">"匹配没有属性的HTML标签中的内容："</span></span><span>; &nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;print_r&nbsp;(&nbsp;</span><span class="vars"><span style="color: #dd0000;">$match</span></span><span>&nbsp;);&nbsp;</span></li>
</ol>
</pre>
<p>替换HTML源码中的地址&nbsp;&nbsp;&nbsp; </p>
<pre>
<ol class="dp-c">
    <li class="alt"><span><span class="vars"><span style="color: #dd0000;">$form_html</span></span><span>&nbsp;=&nbsp;preg_replace&nbsp;(&nbsp;</span><span class="string"><span style="color: #0000ff;">'/(?&lt;=\saction=\"|\ssrc=\"|\shref=\")(?!http:|javascript)(.*?)(?=\"\s)/e'</span></span><span>,&nbsp;</span><span class="string"><span style="color: #0000ff;">'add_url(\$url,&nbsp;\'\\1\')'</span></span><span>,&nbsp;</span><span class="vars"><span style="color: #dd0000;">$form_html</span></span><span>&nbsp;);&nbsp;</span></span></li>
</ol>
</pre>
<p>最后，正则工具虽然强大，但是从效率和编写时间上来讲，有的时候可能没有explode来的更直接，对于一些紧急或者要求不高的任务，简单、粗暴的方法也许更好。</p>
<p>而对于preg和ereg两个系列之间的执行效率，曾看到文章说preg要更快一点，具体由于使用ereg的时候并不多，而且也要推出历史舞台了，再加个个人更偏好于PCRE的方式，所以笔者就不做比较了，熟悉的朋友可以发表下意见，谢谢。 </p>
<img src ="http://www.blogjava.net/DreamFight/aggbug/339704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-12-03 11:25 <a href="http://www.blogjava.net/DreamFight/articles/339704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>phpcms 2008 简体繁体转换的方法 phpcms双语版</title><link>http://www.blogjava.net/DreamFight/articles/339244.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sun, 28 Nov 2010 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/339244.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/339244.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/339244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/339244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/339244.html</trackback:ping><description><![CDATA[我原以为没有繁体版的&nbsp; &nbsp; 但是没想到只要一段代码就行的<br />
&lt;a href="#" id="StranLink"&gt;繁体&lt;/a&gt;&lt;script type="text/javascript" src="images/js/Std_StranJF.Js"&gt;&lt;/script&gt;<br />
把这段代码放到头部或者尾部&nbsp;&nbsp;清除缓存 点击即可切换&nbsp; &nbsp;<br />
按照<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%C4%BC%FE">文件</span>目录<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B5%D8%D6%B7">地址</span>&nbsp;&nbsp;找到 Std_StranJF.Js 这个文件 (这个文件是官方默认提供的 但是官方没有说明)&nbsp; &nbsp;可以修改默认显示的语言
<div class="blockcode">
<div id="code0">
<ol>
    <li>var Default_isFT = 0&nbsp;&nbsp;//[color=Red]默认是否繁体，0-简体，1-繁体[/color]<br />
    <li>var StranIt_Delay = 50 //翻译延时毫秒（设这个的目的是让网页先流畅的显现出来）</li>
</ol>
</div>
</div>
希望对有些朋友有帮助~~~
<img src ="http://www.blogjava.net/DreamFight/aggbug/339244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-11-28 11:35 <a href="http://www.blogjava.net/DreamFight/articles/339244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>css中滚动条样式的设置</title><link>http://www.blogjava.net/DreamFight/articles/335581.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Tue, 19 Oct 2010 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335581.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335581.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335581.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335581.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335581.html</trackback:ping><description><![CDATA[<span id="reply_content_50720783">
<pre>参数说明：<br />
1、overflow-y : 设置当对象的内容超过其指定高度时如何管理内容；overflow-x : 设置当对象的内容超过其指定宽度时如何管理内容。<br />
参数:<br />
visible：扩大面积以显示所有内容<br />
auto：仅当内容超出限定值时添加滚动条<br />
hidden：总是隐藏滚动条<br />
scroll：总是显示滚动条<br />
2、height : 设置滚动条的高度（修改其后数值即可）。<br />
3、滚动条颜色参数设置：<br />
scrollbar-3d-light-color 设置或检索滚动条亮边框颜色<br />
scrollbar-highlight-color 设置或检索滚动条3D界面的亮边（ThreedHighlight）颜色<br />
scrollbar-face-color  设置或检索滚动条3D表面（ThreedFace）的颜色<br />
scrollbar-arrow-color  设置或检索滚动条方向箭头的颜色<br />
scrollbar-shadow-color  设置或检索滚动条3D界面的暗边（ThreedShadow）颜色<br />
scrollbar-dark-shadow-color 设置或检索滚动条暗边框（ThreedDarkShadow）颜色<br />
scrollbar-base-color  设置或检索滚动条基准颜色<br />
<br />
<br />
<br />
<br />
<br />
</pre>
</span>
<h2><strong>xhtml中隐藏滚动条</strong>
</h2>
<p>在用ie6浏览有框架的xhtml页面的时候，默认会水平和垂直滚动条会一起出现，这是ie6的一个bug，在firefox上是正常的，出现的原因是其对XHTML 1.0 transitional doctype的解释缺陷.对于这个bug一般有3种解决方案，<br />
<span style="line-height: 1.3em; color: #3366ff;">方法1:</span>
<br />
代码：<br />
html { overflow-y: scroll; } <br />
原理：强制显示ie的垂直滚动条，而忽略水平滚动条<br />
优点：完全解决了这个问题, 允许你保持完整的XHTML doctype. <br />
缺点：即使页面不需要垂直滚动条的时候也会出现垂直滚动条。<br />
<span style="line-height: 1.3em; color: #3366ff;">方法2:</span>
<br />
代码：<br />
html { overflow-x: hidden; overflow-y: auto; } <br />
原理：隐藏横向滚动，垂直滚动根据内容自适应<br />
优点：在视觉上解决了这个问题.在不必要的时候, 未强制垂直滚动条出现.<br />
缺点：只是隐藏了水平滚动条，如果页面真正需要水平滚动条的时候，<br />
屏幕以外的内容会因为用户无法水平滚动，而看不到。<br />
<span style="line-height: 1.3em; color: #3366ff;">方法3:</span>
<br />
代码：<br />
body { margin-right: -15px; margin-bottom: -15px; } <br />
原理：这会在margin的水平和垂直方向上添加一个负值, IE添加了该精确数值后, 便会去除对滚动条的需求假象.<br />
优点：在视觉上解决了这个问题.，垂直滚动根据内容自适应<br />
缺点：由于"人为创建"了15px的外边距(margin), 所以无法使用该填充过的屏幕区域.</p>
<h2><strong>设置滚动条样式</strong>
</h2>
在原来的html的时候，我们可以这样定义整个页面的滚动条<br />
body{<br />
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/<br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; /*- 左二 -*/<br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; /*- 面子 -*/<br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; /*- 箭头 -*/<br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; /*- 右二 -*/<br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/<br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; /*- 基色 -*/<br />
&nbsp;&nbsp; scrollbar-track-color:#;/*- 滑道 -*/<br />
}<br />
<br />
但是同样的代码，我们应用在 xhtml下就不起作用了，我相信好多好朋友也遇到过同样的问题<br />
那么怎么才能在xhtml下应用滚动条样式呢？看下列代码<br />
html{<br />
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/<br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; /*- 左二 -*/<br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; /*- 面子 -*/<br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; /*- 箭头 -*/<br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; /*- 右二 -*/<br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/<br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; /*- 基色 -*/<br />
&nbsp;&nbsp; scrollbar-track-color:#;/*- 滑道 -*/<br />
}<br />
<br />
这段代码和上一段唯一的不同就是在css定义的元素上，一个是body一个是html。我们再测试一下，把html页面的"body"修改成"html"测试一下，发现依然可以实现效果。那到底是为什么呢？<br />
<br />
从字面上来看，xhtml比html多一个x,那么这个x其实也就是xml,为什么要加一个xml在里面？其实最根本的原因就是要让html更加结构化标
准化（因为html实在是太烂）。我们在html里面定义的是body，因为html不是很标准所以这样可以生效，而在xhtml里面这样就不行了，我看
看那个图很明显，body标签本身不是根元素，只有html才是根元素，而页面的滚动条也是属于根元素的，所以这就是我们为什么定义body没有效果的原
因，因为我们定义的只是一个子原素。ok，我们知道了原理，来做一个试验如果把定义"body"或"xhtml"换成"*"，<br />
*{<br />
scrollbar-3dlight-color:#D4D0C8; <br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; <br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; <br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; <br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; <br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; <br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; <br />
&nbsp;&nbsp; scrollbar-track-color:#;<br />
}<br />
<br />
在html和xhtml都通过，因为*就是定义页面上的任何标签当然也包括了&#8220;html&#8221;这个标签。<br />
<br />
(ps:其实与其说是html与xhtml的区别到不如说是有无XHTML 1.0 transitional
doctype的区别，但是如果你把页面的XHTML 1.0 transitional
doctype去掉的话，那么这个页面就没有doctype，默认的显示方式就是html4.01,不过你要把XHTML 1.0
transitional doctype修改成HTML 4.01
doctype同样页面定义body也不会有效果的，虽然这个页面的标准是html 4.01)<span id="reply_content_50720783">
<pre><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
文章出处：<a href="http://www.365wf.com">养鸡设备</a><br />
<a href="http://www.365wf.com/show/yjrefenglu.html">养鸡热风炉</a>&nbsp;<br />
</pre>
</span>

<img src ="http://www.blogjava.net/DreamFight/aggbug/335581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-19 15:37 <a href="http://www.blogjava.net/DreamFight/articles/335581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS获取浏览器窗口大小 获取屏幕参数</title><link>http://www.blogjava.net/DreamFight/articles/335559.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Tue, 19 Oct 2010 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335559.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335559.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335559.html</trackback:ping><description><![CDATA[<span id="articlecontent" class="wenzhang_con" style="width: 740px;">
<div>
<div>
<p>网页可见区域宽：document.body.clientWidth<br />
网页可见区域高：document.body.clientHeight<br />
网页可见区域宽：document.body.offsetWidth (包括边线的宽)<br />
网页可见区域高：document.body.offsetHeight (包括边线的宽)<br />
网页正文全文宽：document.body.scrollWidth<br />
网页正文全文高：document.body.scrollHeight<br />
网页被卷去的高：document.body.scrollTop<br />
网页被卷去的左：document.body.scrollLeft<br />
网页正文部分上：window.screenTop<br />
网页正文部分左：window.screenLeft<br />
屏幕分辨率的高：window.screen.height<br />
屏幕分辨率的宽：window.screen.width<br />
屏幕可用工作区高度：window.screen.availHeight<br />
屏幕可用工作区宽度：window.screen.availWidth</p>
<p>HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth<br />
scrollHeight: 获取对象的滚动高度。<br />
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离<br />
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离<br />
scrollWidth:获取对象的滚动宽度<br />
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度<br />
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置<br />
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置<br />
event.clientX 相对文档的水平座标<br />
event.clientY 相对文档的垂直座标<br />
event.offsetX 相对容器的水平坐标<br />
event.offsetY 相对容器的垂直坐标<br />
document.documentElement.scrollTop 垂直方向滚动的值<br />
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量</p>
<p><br />
IE，FireFox 差异如下：</p>
<p>IE6.0、FF1.06+：</p>
<p>clientWidth = width + padding</p>
<p>clientHeight = height + padding</p>
<p>offsetWidth = width + padding + border</p>
<p>offsetHeight = height + padding + border</p>
<p>IE5.0/5.5：<br />
clientWidth = width - border</p>
<p>clientHeight = height - border</p>
<p>offsetWidth = width</p>
<p>offsetHeight = height</p>
<p>(需要提一下：CSS中的margin属性，与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)</p>
<p>网页可见区域宽： document.body.clientWidth<br />
网页可见区域高： document.body.clientHeight<br />
网页可见区域宽： document.body.offsetWidth (包括边线的宽)<br />
网页可见区域高： document.body.offsetHeight (包括边线的高)<br />
网页正文全文宽： document.body.scrollWidth<br />
网页正文全文高： document.body.scrollHeight<br />
网页被卷去的高： document.body.scrollTop<br />
网页被卷去的左： document.body.scrollLeft<br />
网页正文部分上： window.screenTop<br />
网页正文部分左： window.screenLeft<br />
屏幕分辨率的高： window.screen.height<br />
屏幕分辨率的宽： window.screen.width<br />
屏幕可用工作区高度： window.screen.availHeight<br />
屏幕可用工作区宽度： window.screen.availWidth</p>
<p>－－－－－－－－－－－－－－－－－－－</p>
<p>技术要点<br />
本节代码主要使用了Document对象关于窗口的一些属性，这些属性的主要功能和用法如下。</p>
<p>要得到窗口的尺寸，对于不同的浏览器，需要使用不同的属性和方法：若要检测窗口的真实尺寸，在Netscape下需要使用Window的属性；在
IE下需要深入Document内部对body进行检测；在DOM环境下，若要得到窗口的尺寸，需要注意根元素的尺寸，而不是元素。</p>
<p>Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。</p>
<p>Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。</p>
<p>document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。</p>
<p>实现代码</p>
<div><sup><a title="WP-CodeBox HowTo?" href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank"><span style="color: #99cc00;">?</span></a></sup><a href="http://www.cnblogs.com/ie421/admin/javascript:;"><font color="#ffffff">[Copy to clipboard]</font></a>Download <a href="http://www.52004.com.cn/wp-content/plugins/wp-codebox/wp-codebox.php?p=1199&amp;download=52004.txt"><font color="#ffffff">52004.txt</font></a>
</div>
<div style="padding-bottom: 15px;">
<table width="100%">
    <tbody>
        <tr id="p11991">
            <td width="1%">
            <pre>1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            </pre>
            </td>
            <td id="p1199code1">
            <pre style="font-family: monospace;">&lt; !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
            &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
            &lt;head&gt;
            &lt;title&gt;请调整浏览器窗口&lt;/title&gt;
            &lt;meta http-equiv="content-type" content="text/html; charset=gb2312"&gt;
            &lt;/meta&gt;&lt;/head&gt;
            &lt;body&gt;
            &lt;h2 align="center"&gt;请调整浏览器窗口大小&lt;/h2&gt;&lt;hr /&gt;
            &lt;form action="#" method="get" name="form1" id="form1"&gt;
            &lt;!--显示浏览器窗口的实际尺寸--&gt;
            浏览器窗口 的 实际高度: &lt;input type="text" name="availHeight" size="4"/&gt;&lt;br /&gt;
            浏览器窗口 的 实际宽度: &lt;input type="text" name="availWidth" size="4"/&gt;&lt;br /&gt;
            &lt;/form&gt;
            &lt;script type="text/javascript"&gt;
            &lt;!--
            var winWidth = 0;
            var winHeight = 0;
            function findDimensions() //函数：获取尺寸
            {
            //获取窗口宽度
            if (window.innerWidth)
            winWidth = window.innerWidth;
            else if ((document.body) &amp;&amp; (document.body.clientWidth))
            winWidth = document.body.clientWidth;
            //获取窗口高度
            if (window.innerHeight)
            winHeight = window.innerHeight;
            else if ((document.body) &amp;&amp; (document.body.clientHeight))
            winHeight = document.body.clientHeight;
            //通过深入Document内部对body进行检测，获取窗口大小
            if (document.documentElement  &amp;&amp; document.documentElement.clientHeight &amp;&amp; document.documentElement.clientWidth)
            {
            winHeight = document.documentElement.clientHeight;
            winWidth = document.documentElement.clientWidth;
            }
            //结果输出至两个文本框
            document.form1.availHeight.value= winHeight;
            document.form1.availWidth.value= winWidth;
            }
            findDimensions();
            //调用函数，获取数值
            window.onresize=findDimensions;
            &nbsp;
            //--&gt;
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;</pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p>源程序解读</p>
<p>（1）程序首先建立一个表单，包含两个文本框，用于显示窗口当前的宽度和高度，并且，其数值会随窗口大小的改变而变化。</p>
<p>（2）在随后的JavaScript代码中，首先定义了两个变量winWidth和winHeight，用于保存窗口的高度值和宽度值。</p>
<p>（3）然后，在函数findDimensions ( )中，使用window.innerHeight和window.innerWidth得到窗口的高度和宽度，并将二者保存在前述两个变量中。</p>
<p>（4）再通过深入Document内部对body进行检测，获取窗口大小，并存储在前述两个变量中。</p>
<p>（5）在函数的最后，通过按名称访问表单元素，结果输出至两个文本框。</p>
<p>（6）在JavaScript代码的最后，通过调用findDimensions ( )函数，完成整个操作。<br />
<img alt="" src="http://image3.360doc.com/DownloadImg/2009/2/9/2041_2496581_1.jpg" border="0" height="602" width="609" /></p>
</div>
</div>
</span>
<img src ="http://www.blogjava.net/DreamFight/aggbug/335559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-19 13:01 <a href="http://www.blogjava.net/DreamFight/articles/335559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用js使png透明图像在ie6下正常使用</title><link>http://www.blogjava.net/DreamFight/articles/335343.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sun, 17 Oct 2010 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335343.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335343.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335343.html</trackback:ping><description><![CDATA[<br />
详细进解在下边文件中请下载使用：<br />
<a href="http://www.blogjava.net/Files/DreamFight/msiepng.rar">http://www.blogjava.net/Files/DreamFight/msiepng.rar</a>
<img src ="http://www.blogjava.net/DreamFight/aggbug/335343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-17 09:05 <a href="http://www.blogjava.net/DreamFight/articles/335343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用js动态改变css样式表</title><link>http://www.blogjava.net/DreamFight/articles/335342.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sun, 17 Oct 2010 00:48:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335342.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335342.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335342.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335342.html</trackback:ping><description><![CDATA[用setAttribute方法实现一个页面两份样式表的效果，具体方法如下： <br />
<br />
第一步：在连接样式表的元素里定义一个id,例如 <br />
<br />
&lt;link href="1.css" rel="stylesheet" type="text/css" id="css"&gt; <br />
<br />
我定义的id是css。 <br />
<br />
第二步：写一个js函数，代码如下： <br />
<br />
&lt;script type="text/javascript"&gt; <br />
function change(a){ <br />
var css=document.getElementById("css"); <br />
if (a==1) <br />
css.setAttribute("href","1.css"); <br />
if (a==2) <br />
css.setAttribute("href","2.css"); <br />
} <br />
&lt;/script&gt; <br />
<br />
这个函数的code可以放在页面的任何地方。 <br />
<br />
第三步：为改变页面的样式表的连接添加一个函数的触发事件，代码如下： <br />
<br />
&lt;a href="#" onClick="change(1)"&gt;1.css&lt;/a&gt; <br />
&lt;a href="#" onClick="change(2)"&gt;2.css&lt;/a&gt; <br />
<br />
该效果在IE和FF下均测试通过，相信大家看完后因该非常明了，利用这个方法我们可以让浏览者自己选择需要显示的样式表，比如年老者可以选择一个字体较大的样式表。这里需要注意的两点是： <br />
<br />
在这个例子中函数名function后面的名字不能为links或者link，如果为links或者link，样式表将不被改变，具体什么原因我也不大清楚，可能是javascript的保留字符。 <br />
另外如果是改变整个页面的样式，你需要在样式表文件里定义body的高度为100%<br />
<br />
<br />
还有一种方法：<br />
<br />
&lt;script language="javascript"&gt; <br />
var b_v = navigator.appVersion; <br />
var IE6 = b_v.search(/MSIE 6/i) != -1; <br />
var IE7 = b_v.search(/MSIE 7/i) != -1; <br />
if (IE6) {<br />
document.write("&lt;link href=""css/neiye_ie6.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" /&gt;");<br />
}else{<br />
document.write("&lt;link href=""css/neiye.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" /&gt;");<br />
} <br />
&lt;/script&gt; <br />
<br />
<br />
<br />
<br />
<a href="http://www.365wf.com">
自动化养鸡设备</a><br />
<img src ="http://www.blogjava.net/DreamFight/aggbug/335342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-17 08:48 <a href="http://www.blogjava.net/DreamFight/articles/335342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>phpcms 出现FCKLang错误</title><link>http://www.blogjava.net/DreamFight/articles/335312.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sat, 16 Oct 2010 13:53:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335312.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335312.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335312.html</trackback:ping><description><![CDATA[<h1>PHPCMS 2008 　FCKLang 未定义　解决方法：</h1>
打开网站<span href="http://bbs.phpcms.cn/tag.php?name=%CE%C4%BC%FE" class="t_tag">文件</span>　PHPCMS\fckeditor\editor\lang\zh-cn.js　把这个编码保存成你的编码格式<br />
<br />
<img src ="http://www.blogjava.net/DreamFight/aggbug/335312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-16 21:53 <a href="http://www.blogjava.net/DreamFight/articles/335312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache配置本地测试多网站域名与虚拟主机</title><link>http://www.blogjava.net/DreamFight/articles/334048.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sat, 09 Oct 2010 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/334048.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/334048.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/334048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/334048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/334048.html</trackback:ping><description><![CDATA[<div class="cnt" id="blog_text">
<div class="articleContent">
<p>1、修改域名访问方式：</p>
<p>运行：C:\WINDOWS\system32\drivers\etc</p>
<p>打开：hosts文件</p>
<p>添加域名指向。</p>
<p>2、修改httpd.conf.</p>
<p>配置生效前提，必须修改跟目录为：</p>
<p>&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
### Order deny,allow<br />
### Deny from all<br />
Order allow,deny<br />
<font color="#ff0000">Allow from all<br />
</font>Satisfy all<br />
&lt;/Directory&gt;</p>
<p>否则会出现无权访问问题。</p>
<p>3、虚拟主机的配置<br />
(1)基于IP地址的虚拟主机配置<br />
Listen 80<br />
&lt;VirtualHost 172.20.30.40&gt;<br />
DocumentRoot /www/example1<br />
ServerName www.example1.com<br />
&lt;/VirtualHost&gt;<br />
&lt;VirtualHost 172.20.30.50&gt;<br />
DocumentRoot /www/example2<br />
ServerName www.example2.org<br />
&lt;/VirtualHost&gt;</p>
<p>(2) 基于IP和多端口的虚拟主机配置<br />
Listen 172.20.30.40:80<br />
Listen 172.20.30.40:8080<br />
Listen 172.20.30.50:80<br />
Listen 172.20.30.50:8080</p>
<p>&lt;VirtualHost 172.20.30.40:80&gt;<br />
DocumentRoot /www/example1-80<br />
ServerName www.example1.com<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40:8080&gt;<br />
DocumentRoot /www/example1-8080<br />
ServerName www.example1.com<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.50:80&gt;<br />
DocumentRoot /www/example2-80<br />
ServerName www.example1.org<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.50:8080&gt;<br />
DocumentRoot /www/example2-8080<br />
ServerName www.example2.org<br />
&lt;/VirtualHost&gt;</p>
<p>(3)单个IP地址的服务器上基于域名的虚拟主机配置：<br />
# Ensure that Apache listens on port 80<br />
Listen 80</p>
<p># Listen for virtual host requests on all IP addresses<br />
NameVirtualHost *:80</p>
<p>&lt;VirtualHost *:80&gt;<br />
DocumentRoot /www/example1<br />
ServerName www.example1.com<br />
ServerAlias example1.com. *.example1.com<br />
# Other directives here<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost *:80&gt;<br />
DocumentRoot /www/example2<br />
ServerName www.example2.org<br />
# Other directives here<br />
&lt;/VirtualHost&gt;</p>
<p>(4)在多个IP地址的服务器上配置基于域名的虚拟主机：<br />
Listen 80</p>
<p># This is the "main" server running on 172.20.30.40<br />
ServerName server.domain.com<br />
DocumentRoot /www/mainserver</p>
<p># This is the other address<br />
NameVirtualHost 172.20.30.50</p>
<p>&lt;VirtualHost 172.20.30.50&gt;<br />
DocumentRoot /www/example1<br />
ServerName www.example1.com<br />
# Other directives here &#8230;<br />
&lt;/VirtualHost&gt;<br />
IXDBA.NET社区论坛</p>
<p>&lt;VirtualHost 172.20.30.50&gt;<br />
DocumentRoot /www/example2<br />
ServerName www.example2.org<br />
# Other directives here &#8230;<br />
&lt;/VirtualHost&gt;</p>
<p>(5)在不同的端口上运行不同的站点(基于多端口的服务器上配置基于域名的虚拟主机)：<br />
Listen 80<br />
Listen 8080</p>
<p>NameVirtualHost 172.20.30.40:80<br />
NameVirtualHost 172.20.30.40:8080</p>
<p>&lt;VirtualHost 172.20.30.40:80&gt;<br />
ServerName www.example1.com<br />
DocumentRoot /www/domain-80<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40:8080&gt;<br />
ServerName www.example1.com<br />
DocumentRoot /www/domain-8080<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40:80&gt;<br />
ServerName www.example2.org<br />
DocumentRoot /www/otherdomain-80<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40:8080&gt;<br />
ServerName www.example2.org<br />
DocumentRoot /www/otherdomain-8080<br />
&lt;/VirtualHost&gt;</p>
<p>(6)基于域名和基于IP的混合虚拟主机的配置:<br />
Listen 80</p>
<p>NameVirtualHost 172.20.30.40</p>
<p>&lt;VirtualHost 172.20.30.40&gt;<br />
DocumentRoot /www/example1<br />
ServerName www.example1.com<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40&gt;<br />
DocumentRoot /www/example2<br />
ServerName www.example2.org<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 172.20.30.40&gt;<br />
DocumentRoot /www/example3<br />
ServerName www.example3.net<br />
&lt;/VirtualHost&gt;</p>
<p>==========================================================================</p>
<p>简单的说,打开httpd.conf 在最后加入如下内容:</p>
<p>&lt;VirtualHost 127.0.0.2:80&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot d:/AppServ/www2<br />
&nbsp;&nbsp;&nbsp; ServerName 127.0.0.2:80<br />
&lt;/VirtualHost&gt;</p>
<p><br />
&lt;Directory "d:/AppServ/www2"&gt;<br />
&nbsp;&nbsp;&nbsp; Options Indexes FollowSymLinks Multiviews<br />
&nbsp;&nbsp;&nbsp; AllowOverride All<br />
&nbsp;&nbsp;&nbsp; Order Allow,Deny<br />
&nbsp;&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</p>
<p>"d:/AppServ/www2" 为你的站点存放目录:重启apache2以后，你的虚拟主机就配置好了，以后就可以通过127.0.0.2,和127.0.0.3进入不同的站点了。</p>
<p>下面为详细说明分析:</p>
<p>在我们安装APACHE的时候一般默认的apache的配置是只有一个网站，这样切换起来很不方便。其实这个问题很好解决，就是把本机的 apache配置成为虚拟服务器。但是，网上大多数教程的是教用 apache如何配置基于域名的虚拟主机的，而在本机调试网站的时候，一般都是用本地ip（127.0.0.1 或 localhost）直接访问，没有用到域名。所以得把apache配置成为基于ip地址的虚拟主机。</p>
<p>首先，我们都知道,所有以127打头的ip地址都应该指向本机，并不只有127.0.0.1，这点大家可以试试。<br />
这样一来，也就是说本机有足够多的ip地址供你来开设虚拟主机了。</p>
<p>废话少说，进入正式的配置工作，下面是apache的httpd.conf里相关配置部分( httpd.conf 位于 Apache2.2\conf )：<br />
1、Listen部分，必须直接指定端口，不指定ip地址，配置应写为：<br />
Listen 80<br />
2、不用像基于域名的虚拟主机那样写&#8220;NameVirtualHost&#8221;。</p>
<p>3、虚拟主机配置段：在httpd.conf 最后加上<br />
&lt;VirtualHost 127.0.0.2:80&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot d:/AppServ/www2<br />
&nbsp;&nbsp;&nbsp; ServerName 127.0.0.2:80<br />
&lt;/VirtualHost&gt;</p>
<p>&lt;VirtualHost 127.0.0.3:80&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot d:/AppServ/www3<br />
&nbsp;&nbsp;&nbsp; ServerName 127.0.0.3:80<br />
&lt;/VirtualHost&gt;...</p>
<p>4、然后相应的配置好各个目录属性，下面是一个目录属性的典型配置：<br />
&lt;Directory "d:/AppServ/www2"&gt;<br />
&nbsp;&nbsp;&nbsp; Options Indexes FollowSymLinks Multiviews<br />
&nbsp;&nbsp;&nbsp; AllowOverride All<br />
&nbsp;&nbsp;&nbsp; Order Allow,Deny<br />
&nbsp;&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</p>
<p>&lt;Directory "d:/AppServ/www3"&gt;<br />
&nbsp;&nbsp;&nbsp; Options Indexes FollowSymLinks Multiviews<br />
&nbsp;&nbsp;&nbsp; AllowOverride All<br />
&nbsp;&nbsp;&nbsp; Order Allow,Deny<br />
&nbsp;&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</p>
<p>重启apache2以后，你的虚拟主机就配置好了，以后就可以通过127.0.0.1和127.0.0.2,127.0.0.3进入不同的站点了。</p>
</div>
</div>
<img src ="http://www.blogjava.net/DreamFight/aggbug/334048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-09 10:39 <a href="http://www.blogjava.net/DreamFight/articles/334048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache虚拟机配置文档</title><link>http://www.blogjava.net/DreamFight/articles/334037.html</link><dc:creator>丁克设计</dc:creator><author>丁克设计</author><pubDate>Sat, 09 Oct 2010 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/334037.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/334037.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/334037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/334037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/334037.html</trackback:ping><description><![CDATA[<p class="cc-lisence" style="line-height: 180%;">
转载时请以超链接形式标明文章原始出处和作者信息及 <a href="http://www.qzdc.net">http://www.qzdc.net</a>
</p>
<p><span style="color: #606060;">&lt;VirtualHost *:80&gt;<br />
</span><span style="color: #606060;">ServerAdmin
webmaster@example.com ——管理员邮箱（可以随便写一个）<br />
</span><span style="color: #606060;">DocumentRoot "/home/phpok-com"
——网站目录<br />
ServerName </span><span style="color: #606060;">example</span><span style="color: #606060;">.com ——
要绑定的域名<br />
ServerAlias <a href="http://www.phpok.com/">www.</a></span><a href="http://www.phpok.com/"><span style="color: #606060;">example</span></a><span style="color: #606060;"><a href="http://www.phpok.com/">.com</a>
——要绑定的别名，如果有多个别名就用英文逗号隔开<br />
CustomLog&nbsp;
</span><span style="color: #606060;">logs/</span><a href="http://www.phpok.com/"><span style="color: #606060;">example</span></a><span style="color: #606060;">.com_custom_log</span><span style="color: #606060;">——用户日志格式（这一行也可以为空）<br />
ErrorLog logs/</span><a href="http://www.phpok.com/"><span style="color: #606060;">example</span></a><span style="color: #606060;">.com_error_log
——错误日志（也可以为空）<br />
&lt;/VirtualHost&gt;</span></p>
<p>步骤：<br />
1.修改httpd.conf<br />
把<span style="color: #ff0000;">#Include conf/extra/httpd-vhosts.conf</span>前面的#去掉，意思是让httpd.conf文件包含httpd-vhosts.conf这个配置文件，这是apache的配置模块化的一个表现，这里不多说。<br />
<br />
寻
找httpd.conf中的ServerName，如果ServerName的设置不是域名
www.abc1.com的话，那么改为ServerName www.abc1.com，如过你要用ssl之类的东西，那么改为ServerName
www.abc1.com:80，就是加了个端口。<br />
<br />
2.修改httpd-vhosts.conf<br />
<br />
添加如下代码（有些可能文件里面就有，改一下就可以了）：<br />
<br />
NameVirtualHost *<br />
<br />
&lt;VirtualHost *&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot "C:/aic"<br />
&nbsp;&nbsp;&nbsp; ServerName www.abc1.com<br />
&nbsp;&nbsp;&nbsp; ServerAlias abc1.com *.abc1.com<br />
&lt;/VirtualHost&gt;<br />
<br />
&lt;VirtualHost *&gt;<br />
&nbsp;&nbsp;&nbsp; DocumentRoot "c:/aic/mybbonline"<br />
&nbsp;&nbsp;&nbsp; ServerName www.efg2.com<br />
&nbsp;&nbsp;&nbsp; ServerAlias efg2.com *.efg2.com<br />
&lt;/VirtualHost&gt;<br />
<br />
值得注意的是，VirtualHost是有顺序的，排在最前的VirtualHost的我们默认的网站域名，其中的DocumentRoot和ServerName都必须与httpd.conf中的一样，包括端口。<br />
<br />
DocumentRoot是虚拟主机的路径<br />
<br />
而ServerAlias是域名的别名，配置了这个，那么一些二级域名就都可以进行虚拟主机解析了。如*.efg2.com就可以代表bbs.efg2.com或news.efg2.com等。<br />
<br />
-----------------------------------------------------------------<br />
<br />
&nbsp;&nbsp;&nbsp; 虚拟主机的一般形式诸如（extra/httpd-vhosts.conf）：<br />
<br />
NameVirtualHost *:80<br />
<br />
&lt;VirtualHost *:80&gt;<br />
ServerName www.domain.tld<br />
ServerAlias domain.tld *.domain.tld<br />
DocumentRoot /www/domain<br />
&lt;/VirtualHost&gt;<br />
<br />
&lt;VirtualHost *:80&gt;<br />
ServerName www.otherdomain.tld<br />
DocumentRoot /www/otherdomain<br />
&lt;/VirtualHost&gt;<br />
<br />
&nbsp;&nbsp;
这是apache2.2中文参考手册中的示例。一般的咱们这样配置在以前版本是没有问题的。但是现在就不一样了。当访问某个虚拟主机下的页面的时候会出现
类似：&#8220;403(禁止访问)，你无法查看该网页&#8230;&#8221;的错误。很明显这是拒绝访问的提示。按照经验很容易找到(httpd.conf)下面的内容：<br />
<br />
&lt;Directory /&gt;<br />
<br />
Options FollowSymLinks<br />
<br />
AllowOverride None<br />
<br />
Order deny,allow&nbsp;&nbsp;&nbsp; <br />
<br />
//先拒绝后允许Deny from all<br />
//拒绝所有的访问&lt;/Directory&gt;<br />
<br />
<br />
&nbsp;&nbsp;
这一个部分就是对目录进行访问控制的，很显然这设置得很严格，因此，我们必须手动加入虚拟机目录的权限控制块，才可以让用户正常访问虚拟机的目录及页面文
件。有两个地方可以加入虚拟目录访问权限控制块：主配置文件httpd.conf和虚拟机配置文件httpd-vhost.conf,毫无疑问我们选择虚
拟机配置文件，主要是维护起来更方便。那么我们把目录访问控制块插入到虚拟机配置文件，这样我们的虚拟主机的配置文件写法就类似这样：<br />
<br />
&lt;VirtualHost *:80&gt;<br />
<br />
DocumentRoot "E:/web"<br />
ServerName www.domain.tld<br />
&lt;Directory "E:/web"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
//插入开始<br />
Options -Indexes FollowSymLinks<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
&lt;/Directory&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
//插入结束&lt;/VirtualHost&gt;&nbsp;&nbsp;&nbsp; <br />
<br />
这
样配置完成后，我们使用apachectl命令及相关参数来检测配置文件是否有问题。确认无误后进行，重新启动apache服务。然后使用浏览器进行访问
测试（呵呵！又是废话了！）。如果还不行的话，那就检查你的页面文件的权限设置是否过高，导致的不能访问了！当然这种情况在windows下比较少见，一
般可能出现在linux环境下。 </p>
<img src ="http://www.blogjava.net/DreamFight/aggbug/334037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">丁克设计</a> 2010-10-09 09:53 <a href="http://www.blogjava.net/DreamFight/articles/334037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>