Win2003+apache+PHP+SqlServer2008 配置生产环境


Posted in PHP onJuly 29, 2014

 安装前的准备:

1.Apache2.2.2

2.PHP5.2.17

3.SqlServer2008

4.sqlncli.msi(SqlServer客户端,可以到微软官方网站去下载)

5.ntwdblib.dll (2000.80.194.0)

6.SQLSRV20.exe,即MicrosoftDriver 2.0 for PHP for SQL Server(sql server 2005 及2008使用SQLSRV20.exe, SQL Server 2010使用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安装成功,已经可以解释静态页面了

SQL Server 2008 的安装 ( https://3water.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 并关联

SQL Server 2008

打开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()控制错误报告输出,具体怎么用大家参考下手册.

7 register_globals 出于安全性考虑它默认也是Off 当register_globals=Off的时候,下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass'])  当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值.  建议根据自己需要修改,为了兼容问题,我还是把它改成On了.

8 php5时差问题 <?php echo date("Y-m-d H:i:s");?>时间相差八小时 为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时 查找date.timezone有这么一行 ;date.timezone = 将;去掉,改成 date.timezone = PRC  其中PRC:People's Republic of China 中华人民共和国,

9 php5上传文件问题 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 和 $_FILES superglobals 便会为空. 查找 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:/Program Files/Apache Software Foundation/Apache2.2/htdocs" 这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误 查找  This should be changed to whatever you set DocumentRoot to 在它下面两行有 <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"> 把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录

3 查找  DirectoryIndex index.html 修改成 DirectoryIndex index.html index.html.var index.php  这样index.php 可以充当默认页面了

4 Apache中模块化安装php 查找 # LoadModule foo_module modules/mod_foo.so 在此行后加入一行 LoadModule php5_module C:/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.否则就可能会出现 "Cannot load C:/php/php5apache2.dll into server: The specified module could not be found." 或者: "The requested operation has failed" 的情况. 不过php5apache2_2.dll出来之后也就没有多少参考价值了)

5 查找 AddType application/x-gzip .gz .tgz 在此行后加入一行 AddType application/x-httpd-php .php  这样apache就可以解释php文件了  到这里配置基本完成了

6 重启apache,在网站根目录下创建一个 phpinfo.php 文件

<?php phpinfo(); ?>

在浏览器中打开。如果能正常看到php的信息,则说明php已经配置好了。

最关键的一步,也就是区别于加载其它 数据库 扩 展的一步,安装sqlncli.msi(SqlServer2008客户端),第一次配的时候,折磨了我一个星期,就是因为没有装客户端,以致总是提示找不到扩展。再把ntwdblib.dll (2000.80.194.0),注意一下版本,PHP本身也有这个文件,是老版本的,只支持SqlServer2000。

最后重启Apache服务器,写个PHP文件,测试一下,一切OK,搞定了!

PHP 相关文章推荐
关于时间计算的结总
Dec 06 PHP
PHP中,文件上传
Dec 06 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
php生成随机颜色方法汇总
Dec 03 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
php实现读取超大文件的方法
Jul 28 #PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 #PHP
php Imagick获取图片RGB颜色值
Jul 28 #PHP
PHP exif扩展方法开启详解
Jul 28 #PHP
取得单条网站评论以数组形式进行输出
Jul 28 #PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 #PHP
PHP常用数组函数介绍
Jul 28 #PHP
You might like
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python处理中文标点符号大集合
2018/05/14 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
python调用自定义函数的实例操作
2019/06/26 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
学前教育教师求职自荐信
2013/09/22 职场文书
毕业生机械建模求职信
2013/10/14 职场文书
环境工程大学生自荐信
2013/10/21 职场文书
就业协议书怎么填
2014/04/11 职场文书
土建施工员岗位职责
2014/07/16 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2016年春节慰问信息
2015/03/25 职场文书
心理学培训心得体会
2016/01/22 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle