透析PHP的配置文件php.ini


Posted in PHP onOctober 09, 2006

今天,我们来侃侃PHP.INI文件中的一些有趣的内容吧。

PHP.INI文件相信每位PHP爱好者都不会陌生,在PHP的上一个版本PHP3.0中它被命名为PHP3.INI。用NOTEPAD打开它,文件通常在操作系统的Windows目录下。大家都看到,PHP.INI文件里面有很多分号“”,和Windows系统一样,这些分号用来表示注解,也就是说为了配置文件清晰易懂,开发者在分号后面对每个配置功能做了简短说明,系统处理时会忽略这些注解行。当然,另外一个好处是,当PHP系统配置有变化的时候,我们可以对某些行加上或去掉注解就行了,简单又方  
便。

auto_prepend_file string 可以指定一个文件自动地在读取所有php文件之前解析执行,可以为PHP、ASP、HTML等任何文件(不过图像文件可不行),在特殊时候倒是很有用。比如你想在每个PHP页面上增加一段广告,又假设你在开发一个网站,想让所有访问者在读取任何PHP页面之前进行身份验证,你就可以把你的验证代码作成单独文件,然后在这里设置string为该文件名就行啦。细心的读者要问了:如果我只是某些文件需要这些功能,可怎么办呀,开动脑筋吧,举个例子:

myprefix.php文件

<?php

if (strstr(strtoupper( PHP_SELF),"/PHPTEST/"))

echo "我的广告!<BR>";

?>

这样只要设置:auto_prepend_file=“myprefix.php”,那么所有phptest目录下的PHP文件就都包含你的广告头啦!还需要说明的是这个文件应该放在include_path所指的路径里面,不然可能会出错的,下面就会提到它。

auto_append_file string 和上面功能类似,只是自动加在PHP文件末尾,而且PHP程序用exit()退出时就不管用了。有了这个功能,我们可以易如反掌地添加公司地址的脚注了!

include_path string 这个参数的作用是让include()、require()等函数在这里所定义的路径中查找文件,是不是有点象DOS时代里用的SET PATH命令?这个参数可以提供一个路径列表,不过在UNIX中路径间用冒号分隔,在NT中用分号,而且斜杠的方向也不相同。如:
UNIX例:include_path=.:/home/lib
NT 例:include_path=".:c:homeib" 其中“.”表示当前目录。
gpc_order string

GPC是GET/POST/COOKIE三种变量的第一个字母,它的顺序体现系统处理三种变量的优先级别,从左到右,优先权依次递增。默认设置为GPC,这样当有其中任两种或三种名称相同变量传递到服务器时,系统会按优先权排序,只读取优先权较高的变量。又比如设定成 “GP” 表示忽视 cookie,并在存取方法 (method) 相同时,以 POST 取代GET。当然,我们在编程过程中应当尽量避免同时用不同的方式传递名称相同的变量,否则程序的可读性会变坏,而且在配置不同的系统里可能会有不同的输出结果。

magic_quotes_gpc boolean 这个参数能确定包含在GET/POST/COOKIE这三种变量中的特殊字符:单引号、双引号、斜杠,是否加转义字符反斜杠(就是C语言里常用的“”)?因为在PHP数据库等系统中,单引号等字符通常有特殊意义,为了和真正的字符区分,我们可以设置magic_quotes_gpc=on,这样如果我们从用户端得到的变量中有单引号时,会在前面加转义符,然后我们可以根据需要用函数stripslashes(string str);(该函数可去掉字串中的反斜杠转义符“”。若是连续二个反斜杠,则去掉一个,留下一个。若只有一个反斜杠,就直接去掉。)来去掉转义符“”,我们可以比较一下:

<form>

<input type="Text" value="" name="a">

<input type="Submit">

</form>

<?php

echo a;

?>

让我们分别在magic_quotes_gpc=on和off的情况下,在文本框中输入单引号、双引号,然后提交,看看有什么区别?

SMTP string 指定邮件发送服务器的域名或IP地址,这样我们就可以发信啦,比起微软的ASP来,PHP的这个功能简单方便得多了,有人要问,如果我没有配备邮件服务器怎么办?很简单,只要填上当地ISP的邮件服务器就行了。其实收发邮件服务器就像我们现实生活中的邮局一样,在哪个邮局都能发信,而收信是在固定邮局。

mysql.default_host string

mysql.default_user string

mysql.default_password string

用过ODBC的读者们都知道,设置ODBC的时候总需要设置数据库所在及其默认的登录用户名和口令,这几个参数也是这个意思,不过是用在MYSQL里面罢了。为了安全起见,我们还有必要在MYSQL里对该用户的权力做一些限定,千万不要偷懒用“root“啊!如果为了方便而设置了这些参数,那我们就能直接用函数mysql_connect()来连接数据库了,注意这里可以不用任何参数!

大家可能在想,虽然这样很方便,同时也很危险呀!别急,在PHP的安全模式里这些参数是无效的,下面我们来看看安全模式的设置吧。

Safe mode boolean 这可不是WINDOWS 98的安全模式啊。当PHP系统处于安全模式下时,我们就能对PHP程序的行为进行一定的控制,这时候一些数据库比如MYSQL、INFOMIX等的默认数据库主机、用户名、口令等设置无效,非法用户就不能轻易连接数据库了。而且在安全模式下safe_mode_allowed_env_vars string该项设置表示什么类型的系统环境变量可以被程序更改,若设置成safe_mode_allowed_env_vars=PHP_则表示只有PHP_打头的系统环境变量可以被修改,例如这时如果在程序中企图使用putenv("windir=UUU");来修改环境变量,系统就会提示一个安全模式的保护错误。还有,安全模式对系统命令system()等有一定限制,如只能在指定目录运行等,这样能对系统文件有一定的保护作用。

log_errors boolean 这个参数指定PHP程序出错时是否要将错误信息记录在 LOG文档中。在NT系统中如果我们同时设置error_log =syslog的话,我们就能在事件查看器的应用程序日志里看到PHP所发生过的错误信息,这对测试一个大型的系统有些帮助。
error_prepend_string = "<font color=ff0000>"
error_append_string = "</font>"

这两个设置参数更有意思啦,按如上设置,那么我们一眼就能看到:我们的程序是否出错了!因为他的功能是把出错信息设置成显眼的红颜色了。

至于其它的很多选项,有的一看便知,有兴趣大家自己试试吧!

PHP 相关文章推荐
PHP HTML代码串截取代码
Dec 29 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
浅谈php和.net的区别
Sep 28 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
Windows7下的php环境配置教程
Feb 28 PHP
PHP实现懒加载的方法
Mar 07 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
一个简单的自动发送邮件系统(三)
Oct 09 #PHP
一个简单的自动发送邮件系统(一)
Oct 09 #PHP
一个简单的自动发送邮件系统(二)
Oct 09 #PHP
通过html表格发电子邮件
Oct 09 #PHP
在 PHP 中使用随机数的三个步骤
Oct 09 #PHP
用PHP制作静态网站的模板框架(四)
Oct 09 #PHP
用PHP制作静态网站的模板框架(三)
Oct 09 #PHP
You might like
PHP自动生成月历代码
2006/10/09 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
对python制作自己的数据集实例讲解
2018/12/12 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
python3实现弹弹球小游戏
2019/11/25 Python
python中图像通道分离与合并实例
2020/01/17 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
工程专业毕业生自荐信范文
2013/12/25 职场文书
大型活动组织方案
2014/05/10 职场文书
玄武湖导游词
2015/02/05 职场文书
教师节班会主持词
2015/07/06 职场文书