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 相关文章推荐
php 动态添加记录
Mar 10 PHP
Smarty Foreach 使用说明
Mar 23 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php输入数据统一类实例
Feb 23 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
Laravel-添加后台模板AdminLte的实现方法
Oct 08 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
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
Python读写Excel文件的实例
2013/11/01 Python
transform python环境快速配置方法
2018/09/27 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
python线程的几种创建方式详解
2019/08/29 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
工艺员岗位职责
2014/02/11 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
安全月活动总结
2014/05/05 职场文书
社区护士演讲稿
2014/08/27 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
贫困生证明范文
2015/06/16 职场文书
科级干部培训心得体会
2016/01/06 职场文书