Win2003+apache+PHP+SqlServer2008 配置生产环境
安装前的准备:
1.Apache2.2.2 2.PHP5.2.17 3.SqlServer2008 4.sqlncli.msi(SqlServer客户端,可以到微软官方网站去下载) 5.ntwdblib.dll(2000.80.194.0) 6.SQLSRV20.exe,即MicrosoftDriver2.0forPHPforSQLServer(sqlserver2005及2008使用SQLSRV20.exe,SQLServer2010使用SQLSRV30.exe)(需要其中的php_pdo_sqlsrv_52_ts_vc6.dll和php_sqlsrv_52_ts_vc6.dll);其中,52表示php5.2,53表示php5.3,ts表示线程安全,nts表示非线程安全,vc6表示用vc6(vs2005)编译的,vc9表示用vs2008编译的,vc6适用于apache,vc9适用于IIS。
开始安装:
Apache 的安装
1点击apahce安装包
2接受协议
3下面3项随便填即可 apache监听80端口.如果iis用了80端口,修改iis端口或者apache端口,以免冲突
(如果本机测试可以填写127.0.0.1)
4这里默认的是typical,建议选custom,点击next.
5这里可用修改安装路径,注意安装路径不能含中文.
6点击install开始安装
7安装完成后在浏览器里打入 http://localhost或者http://127.0.0.1如果可以看到这个页面,证明apache安装成功,已经可以解释静态页面了
SQLServer2008的安装(https://www.nhooo.com/article/30243.htm)
PHP的安装
由于php是一个zip文件(非install版),安装较为简单解压就行.把解压的php-5.2.17-Win32重命名为php5.并复制到C盘目录下.即安装路径为c:\php5
1 找到php目录下的php.ini.recommended(或者php.ini-dist)文件,重命名为php.ini并复制到系统盘的windows目录下(以c:\windows为例).
2 再把php目录下的php5ts.dll,php_mssql.dll复制到目录c:\windows\system32下.
3 把php5\ext目录下的php_gd2.dll,php_mssql.dll,php_mbstring.dll文件复制到c:\windows\system32下 如果没有加载php_gd2.dll php将不能处理图像.php_mbstring.dll在后面使用phpmyadmin时支持宽字符
配置php并关联
SQLServer2008
打开c:\windows\php.ini文件
1设置扩展路径查找extension_dir有这么一行extension_dir="./"将此行改成extension_dir="C:\php5\ext" 其中C:\php5是你安装php的路径.路径不正确将无法加载dll (注意:有些php版本是;extension_dir="./"要把前面的分号去掉)
2分别查找 ;extension=php_mbstring.dll;extension=php_gd2.dll;extension=php_mssql.dll把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
添加:extension=php_sqlsrv_52_ts_vc6.dll(或extension=php_pdo_sqlsrv_52_ts_vc6.dll),注意:二者只能选其一,如果两个都添加则Apache无法启动。
当然前面我们也把这些dll复制到system32下了.(大家在安装的过程中都注意到如何把一些dll加载入来了.
3设置会话保存路径查找session.save_path有这么一行; session.save_path="N;/path"在此行后加入一行(注意是加入一行,不是加到后面)session.save_path="C:\WINDOWS\Temp" 保存到你的临时目录下,这里完全可以保存到windows临时目录Temp下
4还有比较值得注意的是short_open_tag.有一些php版本默认是Off的.也就是说php不能使用短标记如<??>必须使用<?php?>由于短标记使用方便,并且很多程序也是用短短标记来写,如discuz等如果不把short_open_tag改成On将出现的症状将很难判断是上面原因,这里建议修改 查找short_open_tag=Off改为short_open_tag=On
5是否显示错误display_errors 出于安全性考虑,display_errors有些版本也默认为Off.就是说在调试时,如果php代码有误,就只出现一个空白页.而不会显示出错原因和出错行数.这样调试起来将非常不便,建议根据自己需要修改查找display_errors=Off (注意不是;-display_errors=Off [Security])改成display_errors=On
6显示NOTICE敬告提示第五步虽然打开了出错提示,但出错报告还受到error_reporting的控制.php5默认关闭NOTICE敬告提示,如果是在本地调试,建议打开NOTICE敬告提示.查找error_reporting = E_ALL改成error_reporting = 7
另外提示一下,在程序中也可以通过error_reporting()控制错误报告输出,具体怎么用大家参考下手册.
7register_globals出于安全性考虑它默认也是Off当register_globals=Off的时候,下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass']) 当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值. 建议根据自己需要修改,为了兼容问题,我还是把它改成On了.
8php5时差问题<?phpechodate("Y-m-dH:i:s");?>时间相差八小时为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时查找date.timezone有这么一行;date.timezone=将;去掉,改成date.timezone=PRC 其中PRC:People'sRepublicofChina中华人民共和国,
9php5上传文件问题a.一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.但在php中,默认的该页最久执行时间为30秒.就是说超过30秒,该脚本就停止执行.这就导致出现无法打开网页的情况.这时我们可以修改max_execution_time
在php.ini里查找 max_execution_time默认是30秒.改为max_execution_time=0 0表示没有限制
另一种方法是可以在php程序中加入set_time_limit();来设定页面最久执行时间.set_time_limit(0);//0表示没有限制
b.修改post_max_size设定POST数据所允许的最大大小。此设定也影响到文件上传。php默认的post_max_size为2M.如果POST数据尺寸大于post_max_size$_POST和$_FILESsuperglobals便会为空.查找post_max_size.改为post_max_size=150M
c.很多人都会改了第二步.但上传文件时最大仍然为8M.为什么呢.我们还要改一个参数upload_max_filesize表示所上传的文件的最大大小。 查找upload_max_filesize,默认为8M改为upload_max_filesize=100M
另外要说明的是,post_max_size大于upload_max_filesize为佳.
Apache整合PHP
1打开apache配置文档,以作者的电脑为例:D:\myphp\apache2.2\conf\httpd.conf
2修改网站根目录查找DocumentRoot有这么一行DocumentRoot"C:/ProgramFiles/ApacheSoftwareFoundation/Apache2.2/htdocs"这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现403错误查找 ThisshouldbechangedtowhateveryousetDocumentRootto在它下面两行有<Directory"C:/ProgramFiles/ApacheSoftwareFoundation/Apache2.2/htdocs">把上面两项的C:/ProgramFiles/ApacheGroup/Apache2/htdocs改成你想要的目录
3查找 DirectoryIndexindex.html修改成DirectoryIndexindex.htmlindex.html.varindex.php 这样index.php可以充当默认页面了
4Apache中模块化安装php查找#LoadModulefoo_modulemodules/mod_foo.so在此行后加入一行LoadModulephp5_moduleC:/php5/php5apache2_2.dll
(其中C:/php5/php5apache2_2.dll是你安装php的相应路径.注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,必须使用php5apache2_2.dll.否则就可能会出现"CannotloadC:/php/php5apache2.dllintoserver:Thespecifiedmodulecouldnotbefound."或者:"Therequestedoperationhasfailed"的情况.不过php5apache2_2.dll出来之后也就没有多少参考价值了)
5查找AddTypeapplication/x-gzip.gz.tgz在此行后加入一行AddTypeapplication/x-httpd-php.php 这样apache就可以解释php文件了 到这里配置基本完成了
6重启apache,在网站根目录下创建一个phpinfo.php文件
<?phpphpinfo();?>
在浏览器中打开。如果能正常看到php的信息,则说明php已经配置好了。
最关键的一步,也就是区别于加载其它数据库扩展的一步,安装sqlncli.msi(SqlServer2008客户端),第一次配的时候,折磨了我一个星期,就是因为没有装客户端,以致总是提示找不到扩展。再把ntwdblib.dll(2000.80.194.0),注意一下版本,PHP本身也有这个文件,是老版本的,只支持SqlServer2000。
最后重启Apache服务器,写个PHP文件,测试一下,一切OK,搞定了!