免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 991 | 回复: 0
打印 上一主题 下一主题

PHP.INI配置文件漫游 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-03 19:29 |只看该作者 |倒序浏览
PHP配置文件
  在开始浏览PHP配置文件之前,值得注意的是PHP配置文件的内部结构化。这个文件叫php.ini,它和许多Windows应用程序中广泛使用的INI文件具有相同的结构。php.ini是一个ASCLL文本文件,其分为多个部分,每一部分包括相关的参数,如下所示:
  [MySection]
variable="value"
anothervariable="anothervalue
  每一部分的名称位于最前面的方括号内,接着是名称对数字,每一名称对占单独一行。因为用规则PHP代码,参数名称非常敏感,不能包含有空格.但是参数值可以是数字,字符串或者布尔逻辑数。
  分号位于每一行的开始,其作为指定标记。这就使它很容易使用或者不使用PHP的这些特性;而无需通过删除该行而实现.你可以对其进行注解,由此该行不会编译。如果你想在以后数据库中再次使用这一特性,这是非常方便,你不需要将其从文件中删除。
  为了获得PHP的识别,php.ini文件必须放置在当前目录下,而这一目录是在$PHPRC环境参数中定义,或者是在编译时间内指定的目录(对于Windows PHP,就是首要Windows目录)。
  通过php.ini文件对PHP格式做出改变之后,你将需要重新启动Web服务器,以便你的改变生效(当然,这是假定你正在通过Web服务器使用PHP的情况)。对于使用PHP的命令行情况,每调入一个PHP二进制程序,配置文件就会被读入一次。
  设置解析器选项
  在这一过程中,第一步是最为重要的一步,即与语言解释程序相关的选项。这里首要选项为引擎参数,其控制PHP服务器为“On”或者为“Off”。关闭服务器表示嵌入的PHP代码不会被Web服务器解析。然而通常将服务器保持“On”状态。
  engine = On
  short_open_tag参数控制语法分析器是否识别快捷键,类似于识别标准键。如果这一参数与其它语言发生冲突,或者如果你想在PHP代码中使用严格语法规则,就关闭该参数。
  short_open_tag = On
  通常情况下,在任何由程序产生输出之前,Cookie或者HTTP数据必须被发送。如果在程序中无法实现这些,你可以通过使用输出缓冲器(output_buffering)参数,使PHP调用输出缓冲器生效。
  通过输出缓冲器为“On”状态,PHP将程序输出存储在一个专门的记忆缓冲器,且在明确指定发送的时间段发送。这就允许你在编写程序过程或者是快要结束的时候,发送特殊的HIIP标题和重要数据,但是,它也会下降一些重要的功能。
  output_buffering = Off
  
  你也可以通过output_buffering参数值指明缓冲器大小,例如:
  output_buffering = 2048
  
  当PHP启动时,它添加一条有关版本号的信息到Web服务器的标准标题框。为了关闭这一特性,可以设定expose_php为false。这是非常有用,例如,你可以防止黑客而把你的网页服务器容量隐藏起来。
  expose_php = On
  
  现在让我们来看看怎样设置搜索路径和捕捉错误。
  设置PHP搜索路径
  你可以使用include_path参数设置PHP的搜索路径,这一参数可以接收系列的目录。当PHP遇到没有路径的文件提示时,它将会自动检测这些目录。
  如果你频繁使用函数库或者类时,可以列出它们当前位置以简化文件的查找。这也是增加路径到PHP的PEAR目录的一个好方法,PEAR目录中包含许多可以重复使用的类。
  include_path = ".:/usr/local/lib/php/pear:"
  
  Window用户可以通过分号指定多个位置,而UNIX用户必须用冒号隔开。
  对于这一小节内容,最好的两个参数是auto_prepend_file和auto_append_file。这些参数指定了一些文件,而这些文件在PHP启动和结束时自动设置数据文件的搜索路径。这一特性大多数用于设置PHP运行中页面的标题和页角的搜索路径,这就使得你可以在编写的每个PHP文件中省去几行代码。但是不足的是,指定的文件将会被添加*all* PHP文档,因此,这些参数最适合于单一程序的服务器。
  这些文件既可以是PHP程序,也可以是HTML文件。嵌入的PHP代码必须用标准的设置extension-specific变量
  变量extension-specific被存放在配置文件中一个单独的区域。比如,所有同MySQL扩展功能相关的变量都应当存储在php.ini中的[MySQL]区域。
  如果需要使用PHP的mail()函数,则需要设置以下三个变量。当通过PHP mail()函数发送电子邮件信息时需要使用SMTP以及变量sendmail_from(Windows系统)或变量sendmail_path(UNIX系统)。对于Windows,这些变量设置了所用到的SMTP服务器以及显示在电子邮件信息中的“From:”地址;而对于UNIX,变量sendmail_path则对邮件传输设置了MTA(邮件传输代理,mail transfer agent)的路径。
  SMTP = myserver.localnet.com
  sendmail_from = me@localhost.com
  sendmail_path = /usr/sbin/sendmail
  变量java.class.path、java.home、java.library以及java.library.path全部用来设置查找Java类以及库的路径。这些值将被Java扩展所使用,所以如果希望PHP能正确的同Java程序进行集成,则必须确保这些变量被正确的设置。
  java.class.path = .\php_java.jar
  java.home = c:\jdk
  java.library = c:\jdk\jre\bin\hotspot\jvm.dll
  java.library.path= .\
  变量session.save_path指定了保存会话信息所需的临时目录。通常而言,此目录默认为/tmp,但由于在Windows系统中此默认目录并不存在,所以你必须将其重新设置为正确的Windows临时目录,否则会话处理程序将会在调用session_start()函数时弹出讨厌的出错信息。同时可以通过变量session.cookie_lifetime来控制会话cookie的有效期。
  session.save_path = c:\windows\temp
  session.cookie_lifetime = 1800
安全设置
  在php.ini中,有很多同PHP安装的安全问题相关的变量。其中最有趣的是safe_mode变量,建议针对ISP以及共享主机服务(shared-hosting services)对其进行设置,此变量将对用户对PHP的使用范围进行限制。
  safe_mode = Off
  当safe mode打开的时候,可以通过变量safe_mode_include_dir指定在何目录中查找相关文件。通过将二进制程序放在特定目录并使用safe_mode_include_dir变量将目录告之PHP,PHP将对可使用exec()命令运行PHP脚本的程序种类进行限制。在此目录中仅二进制文件可以通过exec()命令进行访问。
  safe_mode_include_dir = /usr/local/lib/php/safe-include
  safe_mode_exec_dir = /usr/local/lib/php/safe-bin
  还可以通过变量open_basedir来限制文件操作。此变量将设置作为文件操作根(root)的目录名。此变量设置后,对于PHP来说,存放在此目录树以外的文件将无法访问。这对于在共享系统中将用户限制在各自的home或者Web目录是一种很好的方法。
  open_basedir = /home/web/
  变量max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭。
  max_execution_time = 90
  刚提到了上传,现在来看看如何配置uploads变量以及form变量。
配置文件上载以及表单变量
  如果我们在文章前面所讨论安全配置所提供的安全强度还不能满足你的要求,可以通过关闭文件上传或设置每次上传最大文件尺寸限制来进一步提高安全强度。以上两种功能将分别通过变量file_uploads和upload_max_filesize来实现。通常来说,除非系统中有为接收文件而设计的应用程序(例如基于Web FTP服务的图片册),你应当设置一个相对较小的文件尺寸限制值。
  如果你对于上传文件并不关心,但在PHP应用程序中使用了大量的表单,这里有两个变量将会让你产生很大的兴趣。首先是变量register_globals,它解决了PHP开发人员长期以来的心头之痛。在PHP 3.x中,此变量默认为On。由此当提交表单时表单变量将自动的转换成PHP变量。
  在PHP 4.x中,出于安全考虑,此变量默认设置为Off。由此,表单变量将只能通过特定的$_GET以及$_POST进行访问。这也造成了很多用PHP 3.x编写的脚本在运行时出现问题,要求开发人员重写脚本并对其重新测试。比如,输入到表单域中的值对于PHP 3.x脚本来说将可以理解为$email;而在PHP 4.x脚本中却被作为$_POST['email']或者$_GET['email']。
  通常情况下可以将此变量设置为Off,这样可以对通过表单进行的脚本攻击提供更为安全的防范措施。如果需要考虑到对早期PHP 3.x脚本的兼容问题,则应当置于On。
  register_globals = Off
  同表单提交相关的一个变量是post_max_size,它将控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。似乎不大可能需要将默认的8 MB改得更大。相反,应当适当将其降到更为实际的数值。但如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize还要大。
  post_max_size = 8M
  在PHP 5中增加了max_input_time变量。此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间。
  max_input_time = 90
性能调整
  你还可以通过调整一些变量值来提升PHP解析器的性能。为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量:
  变量memory_limit的值应当适当大于post_max_size的值。
  另一项可以用于提高性能的方法是禁用变量$argc以及$argv,这两个值被用于存放在命令行中传递给应用程序的参数数量以及实际参数值。
  register_argc_argv = false
  类似,还可以禁用$HTTP_GET_VARS以及$HTTP_POST_VARS,因为在使用$_GET以及$_POST的今天你不大可能用到前两种方式。禁用此功能可以带来性能上的提升,但这只能通过PHP 5中的变量register_long_arrays实现。
  register_long_arrays = false
  函数ini_set()
  最后,需要注意ini_set()函数。当PHP读取php.ini配置文件中的所有设置信息的同时,它还提供了采用ini_set()函数根据per-script原则更改这些设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。例如,在某脚本出现时增加最大执行时间(maximum execution time):
  
  这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。
  如果PHP应用程序运行在一个共享服务器上,你不大可能可以访问到主php.ini配置文件。这时,函数ini_set()就可以允许根据特殊要求对PHP配置做动态修改,这将会给你带来很大的方便。
PHP学习研究:PHP.INI配置文件漫游
/php/install/200701/94572.html


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12364/showart_242443.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP