首先下载好需要安装的配置文件
1、apache-2.2.16
2、php-5.2.14-Win32
一、apache配置
apache的安装不说了,安装过程中选择自己想安装的位置,一路next,就可以了。默认80端口,安装结束后,浏览器输入http://localhost/进行验证,成功的话会输出It works!
apache配置:配置文件位于安装目录下的%APACHE_HOME%\conf\httpd.conf,修改根目录DocumentRoot(一共两处)。端口也在这里修改。
二、php配置
把下载好的php-5.2.14-Win32.zip解压。注意下载的时候不要下php的debug或者none-thread-safe版。否则与apache结合后会出错。
把解压出来的php.ini-dist复制一份做备份,然后把原php.ini-dist重命名为php.ini,打开该文件,进行配置。
1.设置扩展位置:extension_dir = "%PHP_HOME%/ext"(修改后启用该设置要去掉前面的分号,%PHP_HOME%为php的解压目录)
2.打开需要用到的扩展:将extension=php_bz2.dll,extension=php_gd2.dll,extension=php_mysql.dll,extension=php_mysqli.dll前面的分号去掉(注意前面不能有空格),如果还要开其它扩展,那么将其它扩展前面的分号去掉。
3.时差问题:查找
;date.timezone =
修改为
date.timezone = PRC
4.设置与apache结合
打开apache配置文件httpd.conf,在
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
这一行的下面输入:
LoadModule php5_module E:/php/php-5.2.14-Win32/php5apache2_2.dll
PHPIniDir "E:/php/php-5.2.14-Win32"
AddType application/x-httpd-php .php .phtml
解释:
第一行为php与apache结合需要用到的动态链接库位置,该文件在php解压后的根目录中。
第二行为php.ini文件的路径
第三行是告诉浏览器对.php.phtml文件转发给apache进行解析。
重启Apache,这样就可以和php关联起来了。(注意每次修改Apache或者PHP配置文件时都要重启Apache)
应该会遇到乱码的问题,当遇到的时候在继续补充。
PS: 果然遇到乱码了,我用的是Eclipse for PHP Developers进行开发。在首选项里将workspace的编码默认设置为utf-8,可是当php或者html页面中,如果不包含<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">,那么就会出现中文乱码。查看乱码文件的编码已经是utf-8了,必须另存重新保存为utf-8,乱码才消失,应该是bom (Byte Order Mark)的问题。目前解决方法:打开php.ini文件,查询关键字:“default_charset”,去掉前面的分号,将值修改为utf-8,重启apache。
下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船
1.必须知道textarea中的换行符是 \n (个人检测发现按回车键是\n,好像在linux下是\r\n)
2.用nl2br之前,请仔细看好手册解释,我就是搞郁闷了,一般都理解为将\n转换成<br >,其实不是的:
看php手册解释:
nl2br – Inserts HTML line breaks before all newlines in a string
Returns string with ‘<br />' inserted before all newlines
意思是说在 新的一行前插入<br />
w3cschool上的说法是:
nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。
所以nl2br()能够插入<br> 但 \n 依旧存在,比如说 字符串源码是:程序\n生活网,我们nl2br 之后就是 程序<br>\n生活网 所以我们看到的效果将是
程序
生活网———————-换行了,因为源码中还有\n
3.用php函数,str_replace替换函数,比如str_replace(‘\n','<br />') ,问题是替换并没有成功,一直都没有替换掉,我弄了好久甚至开始怀疑textarea中的换行符是不是\n,现在想想真是太动摇了,o(∩_∩)o… 其实我经过测 分别替换 \n /n 后直觉告诉我自己走进了死胡同,这不是解决问题的方式,肯定有哪里存在根本性错误。突然我想到了会不会是单引号或者双引号的问题呢,于是将str_replace(‘\n','<br />') 改成str_replace(“\n”,”<br />”),灵光闪现了,替换成功。巨汗!
又打开手册把单引号和双引号再看了一遍,最后长叹了一口气,还是自己基础的问题啊,php随简单,还是要注意细节啊。
手册中关于单双引号的解释很详细:
单引号指定一个简单字符串的最简单的方法是用单引号(字符 ‘)括起来。
要表示一个单引号,需要用反斜线(\)转义,和很多其它语言一样。如果在单引号之前或字符串结尾需要出现一个反斜线,需要用两个反斜线表示。注意如果你试图转义任何其它字符,反斜线本身也会被显示出来!所以通常不需要转义反斜线本身。
————–所以我们用str_replace(‘\n','<br />')替换的 字符串中的 \n 而不是换行符,似乎有些晕。也就是说单引号内的是字符串,php不做任何解释,这其实在别的地方用的时候都知道,但没想到连换行符都不解释。 双引号如果用双引号(”)括起字符串,PHP 懂得更多特殊字符的转义序列:
表格 6-1. 转义字符
序列
含义
\n
换行(LF 或 ASCII 字符 0×0A(10))
\r
回车(CR 或 ASCII 字符 0×0D(13))
\t
水平制表符(HT 或 ASCII 字符 0×09(9))
\\
反斜线
\$
美元符号
\”
双引号
\[0-7]{1,3}
此正则表达式序列匹配一个用八进制符号表示的字符
\x[0-9A-Fa-f]{1,2}
此正则表达式序列匹配一个用十六进制符号表示的字符
此外,如果试图转义任何其它字符,反斜线本身也会被显示出来!
———这下textarea换行的问题明了了,不是换行符的问题,也不是nl2br的问题,是所有的转移只存在双引号中,单引号在php中只做字符处理。多么郁闷的错误啊。以后一定的牢记。
这句有问题:经过我的测试,在windows下是\r\n,在linux才是\n(这个没实测),另外,在win下,\r,\n均有换行的功能...
安装服务[apache_pn]失败.可能原因如下:
1. 服务名已存在,请卸载或使用不同的服务名.
2. 非管理员权限,不能操作 Windows NT 服务.
请首先确认操作系统的版本。如果您正在使用Windows Vista或Windows 7,那么首先要排除权限问题。您可以在”开始——搜索“中输入”cmd“,在搜索结果中找到“cmd.exe“,点右键,选择“以管理员身份运行”。然后使用DOS命令重新运行“PHPnow”解压目录中的“Init.cmd”:
C:\>cd PHPnow
C:\PHPnow>init
如果使用上述方法仍然安装失败,则可以尝试再次以上述方式启动“命令提示符(CMD)”,进入PHPnow的“PnCmds”目录,执行其中的“绝对强制卸载.cmd”:
C:\>cd PHPnow\PnCmds
C:\PHPnow\PnCmds>绝对强制卸载
然后删除PHPnow目录,重新启动计算机,再执行“Setup.cmd”重新安装。