日期:2012-09-05 浏览次数:20527 次
一般来说你不需要改变PHP设置,它根据默认的配置通常就能很好的工作。但作为PHP设计者的开发人员们考虑到用户可能偶尔需要针对特定应用程序对PHP语言的一些功能进行调整。因此,他们将一些PHP变量通过名为php.ini的配置文件显示出来。此配置文件允许用户调整PHP多项功能,包括设置文件路径以及目录、改变会话以及数据库参数,以及激活扩展选项(activating extensions)等。
在开始我们的介绍之前,我们将对PHP配置文件的组织方式进行简要的说明。文件命名为php.ini的原因之一就是它遵循许多Windows应用程序中INI文件的常见结构。它是一个ASCII文本文件,并且被分成几个不同名称的部分,每一部分包括与之相关的各种变量。每一部分类似于如下结构:
[MySection]
variable="value"
anothervariable="anothervalue"
各部分的名称通过方括号括起来放在顶部,然后将是一对对任意数量的“变量名——值”,每一对占单独一行。同常规的PHP代码要求一样,变量名区分大小写且不能包含空格,变量的值可以是数字、字符串,或者布朗型(Boolean)。
每一行如果以分号开头则表明该行是注释语句。这也使得允许或禁止PHP功能变得非常简单。你只需要将相关语句注释而无需删除,该语句就不会被系统解析。特别是当你希望在一段时间以后重新打开某种功能的时候特别方便,因为你不需要在配置文件中将此行删除。
为了便于PHP识别,php.ini文件必须要么放在当前目录,要么放在$PHPRC环境变量所定义的目录中,或者是在编译时所指定的目录(对Windows PHP来说即Windows主目录)。
在通过修改php.ini文件改变PHP配置之后,需要重启Web服务器以使配置改变生效(当然这是在通过Web服务器使用PHP的情况下)。对于PHP命令行使用模式,每次只要涉及到PHP二进制程序的时候系统都会读取配置文件。
这是配置文件漫游的第一站也是非常重要的一站:语言解释程序相关选项。第一行是引擎变量,它将控制PHP引擎是“on”还是“off”。关闭引擎则意味着嵌入的PHP代码将不会被Web服务器所解析。通常将其关闭是毫无意义的,所以保持开启状态。
engine = On
short_open_tag则控制解析器是否识别简写的<?...?>标志,即将其等价为标准<?php...?>标志。如果预计简写标志会和别的语言产生冲突,或者希望对PHP代码采用严格的语法规则,那么可以将其关闭。
short_open_tag = On
通常而言,在PHP脚本中的会话、cookie或者HTTP文件头数据必须在脚本产生任何输出之前发送出去。如果在你的应用程序中不可能实现,你可以通过允许PHP称之为output buffering功能来达到这一目的,此功能通过output_buffering变量进行控制。
如果打开output buffering,PHP将把脚本产生的运行结果存放在特殊的内存缓冲区域内,并在得到明确指示时才将其发送出去。通过这样的方式,你甚至可以在脚本中部或者脚本尾部发送特殊的HTTP文件头以及cookie数据。当然,这样会造成脚本运行性能一定程度的下降。
output_buffering = Off
你还可以为output_buffering变量赋值以指定缓冲区域大小,例如:
output_buffering = 2048
当PHP启动的时候,它将在Web服务器标准头信息中添加PHP版本号信息。如果希望关闭此功能,可以将expose_php设置为false。这项功能非常有用,例如,可以在Web服务器上屏蔽此信息以防范潜在的黑客攻击。
expose_php = On
现在来看看如何设置查找路径以及差错控制。
可以通过include_path变量设置PHP查找路径。它允许包括一系列目录。在相关文件调用缺少指定路径的情况下,PHP将自动检查这些目录。
如果有频繁使用的函数库或类,也可以将其位置写在这里以方便查找。这也是一个很好的添加PHP的PEAR目录路径的地方,此路径将包括很多可重用的类。
include_path = ".:/usr/local/lib/php/pear:"
Windows用户可以通过分号分割路径名来指定多路径;UNIX用户则需要使用冒号。
另外两个有趣的变量是auto_prepend_file以及auto_append_file。这些变量指定PHP自动添加到任何PHP文档文件头或文件尾的其他文件。这对于为PHP产生的页面添加页眉或页脚非常有用,可以节省为每个PHP文档添加代码的时间。但需要注意这里的指定文件将会添加到所有的PHP文档中,所以这些变量必须适合单应用程序(single-application)的服务器。
所包含的文件要么是PHP脚本,要么是普通的HTML文档。嵌入式PHP代码必须用标准<?php...?>标记括起来。
auto_prepend_file = /home/web/includes/header.php
auto_append_file = /home/web/includes/legal.php
PHP的差错可以分为四类:解析错误、关于代码小问题的提示(notice)(例如变量未初始化)、警告(除了非致命错误),以及致命错误(fatal errors)。通常而言,当PHP遇到除第二种(关于代码小问题的提示)以外的错误时,将显示错误信息,并且如果属于致命错误则会立即停止代码处理。你可以通过修改error_reporting变量来对此功能进行修改。此变量可以接收一比特位的错误代码,且只显示同这些代码相同的错误。
error_reporting = E_ALL
要关闭显示所有错误——在产品代码中通常建议这么做——可以将display_errors变量设置为false,并使用log_errors变量将信息写入错误日志(error log)。
此举可以提高系统的安全性能——通过关闭错误显示,你可以将系统的特定信息隐藏起来,恶意用户就无法利用这些信息试图入侵站点或应用程序。但你应当通过将error_log变量指定为文件名或特殊值“syslog”,从而将这些错误信息写入到自定义日志文件或者系统日志中。请记住定期检查这些文件,以知道在应用程序内部到底发生了什么。
display_errors = Off
log_errors = On
error_log = "error.log"
PHP可以使用很多不同的扩展选项。在UNIX系统中,扩展选项需要在编译时创建;而对于Windows,二进制DLL文件将随PHP发布而将自己包括进去。变量extension_dir包括了PHP应当查看相关扩展选项的目录名。
extension_dir = "C:\Program Files\Internet Tools\Apache\bin\php4\extensions"
Windows下的PHP包括了20种不同的扩展选项,并且全部都列在了php.ini文件中(通过注释)。要激活某个特定的扩展选项只需要将相应行首的分号去掉并重启服务器就可以了。如果要禁用某个扩展选项(比如在需要提升系统性能的情况下),只需要在行首重新添加分号。
如果扩展选项没有列在php.ini文件中,可以使用变量extension,然后将相应DLL文件名传递给此变量。
extension=php_domxml.dll
extension=php_dbase.dll
设置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 = <A href="mailto:me@localhost.com">me@localhost.