2.6 PHP配置文件详解
对于PHP来说,绝大部分的功能和属性都可以通过配置文件来管理和配置。如果想更好管理和配置PHP,就必须对其配置文件有详细的了解。
下面就来详细介绍PHP的主配置文件php.ini里面的一些主要配置项。由于配置项较多,这里只介绍主要的配置项:
★ engine:指定是否启用PHP解析引擎,默认值为On,配置方法为engine = On,仅在PHP作为Apache模块时才生效
★ last_modified:指定是否在Last-Modified的应答头里放置该PHP脚本最后的修改时间,默认值为Off,配置方法为last_modified = Off,仅在PHP作为Apache模块时才生效
★ xbithack:指定是否将所有页面文档都作为PHP可执行位组来解析,默认值为Off。
★ child_terminate:指定PHP脚本在请求结束后是否允许使用apache_child_terminate()函数终止子进程,注意:
本选项只有在UNIX平台上并将PHP安装为Apache 1.3的模块时可用,默认值为Off,配置方法为child_terminate = Off
★ assert.active:指定是否启用assert()函数来断言,默认值为On,配置方法为assert.active = On
★ assert.bail:指定是否在发生断言失败时终止脚本的执行,默认值为Off,配置方法为assert. bail=Off
★ assert.callback:指定发生断言失败时执行的回调函数,默认值为空,配置方法为assert. callback=回调函数名
★ assert.warning:指定是否对每个断言失败都发出警告,默认值为On,配置方法为assert.warning=On
★ assert.quiet_eval:指定是否不显示任何错误信息,若将其设置为Off则在评估断言表达式时使用当前的error_reporting配置项值,默认值为Off,配置方法为assert.quiet_eval = Off
★ allow_url_fopen:指定是否允许打开用URL标识的远程文件,默认值为On,配置方法为allow_url_fopen = On
★ allow_url_include:指定是否允许使用include/require方法来调用远程文件,默认值为Off,配置方法allow_url_include = Off
★ enable_dl:指定是否允许使用dl()函数,dl()函数仅在PHP作为Apache模块安装时有效,禁用dl()函数主要是出于安全考虑,默认值为On,配置方法为enable_dl = On
★ expose_php:指定是否在HTTP头中加上PHP签名,显示PHP被安装在服务器上,默认值是On,配置方法是:expose_php = On
★ open_basedir:指定是否将PHP允许操作的所有文件,包括文件自身都限制在此目录列表下。在安全方面,如果一个PHP脚本试图打开一个指定目录列表之外的文件时,将遭到拒绝,并且所有的符号连接都会被解析,因此不可能通过符号连接来避开此限制。默认值是空,即允许打开所有文件,配置方法为open_basedir = 路径名列表
★ default_socket_timeout:指定socket超时时间,单位为秒,默认值为60,配置方法为default_socket_timeout=60
★ max_execution_time:指定每个脚本最大允许执行的时间,单位为秒,0表示没有限制。本配置项只计算脚本本身的运行时间,不包含任何其他脚本运行之外的时间,如system()/sleep()函数的执行、数据库查询、文件上传等时间都不包括在内。在安全模式下,不能使用ini_set()函数来改变这个设置。默认值为30,配置方法为max_execution_time=30
★ memory_limit:指定一个脚本所能够使用的最大内存,可以使用单位KB和MB;要使此配置选项生效必须在configure时使用"—enable-memory-limit"选项;如果要取消内存限制,则将其设为-1;设置了该配置项后,可以使用memory_get_usage()函数获取可用内存值。默认值为16MB,配置方法为memory_limit=16MB
★ max_input_time:指定每个脚本解析通过POST、GET、UPLOAD方法输入数据的最大允许时间,单位为秒;默认值为-1,表示不限制,配置方法为max_input_time=-1
★ post_max_size:指定使用POST方法时允许传输的最大数据长度,此配置项会影响到文件上传;如果上传的数据超出本值,那么$_POST和$_FILES将会为空;如果要上传大文件,本值应该大于upload_max_filesize配置项的值;如果启用了内存限制,那么本值应该小于memory_limit配置项的值。默认值为8MB,配置方法为post_max_size=8M
★ realpath_cache_size:指定PHP使用的realpath缓冲区大小,在PHP打开大量文件的系统上可以增大该值以便提高性能;默认值为16KB,配置方法为realpath_cache_size = 16KB
★ realpath_cache_ttl:指定realpath缓冲区中信息的有效时间,单位为秒;在对文件很少变动的系统上可以增大该值以提高性能;默认值为120,配置方法为realpath_cache_ttl=120
★ file_uploads:指定是否允许使用HTTP协议上传文件,默认值为On,配置方法为file_uploads =On
★ upload_max_filesize:指定上传文件的最大字节数,默认值是2M字节,配置方法为upload_max_filesize=2M
★ upload_tmp_dir:指定文件上传后存放文件的临时目录,注意此目录必须是PHP进程可写的目录,如果未指定则使用系统默认的临时目录,默认值为空,配置方法为upload_tmp_dir=路径名
★ default_mimetype:指定PHP输出的默认HTTP头"Content-Type:text/html",默认值为text/html,配置方法为default_mimetype="text/html"
★ default_charset:指定PHP输出的默认HTTP头中的编码选项,配合default_mimetype使用,如"Content-Type:text/html; charset=gb2312";默认值为gb2312,配置方法为default_charset= "gb2312"
★ extension:指定PHP启动时加载的动态扩展库,无默认值,配置方法为extension=mysqli. so,其中"="之后只能使用动态扩展库的文件名,而不能包含路径,路径信息必须在extension_dir配置项中配置;在Windows上已经内置下列扩展:bcmath;calendar;com_dotnet;ctype;session;filte r;ftp;hash;iconv;json;odbc;pcre;Reflection;date;libxml;standard;tokenizer; zlib;SimpleXML;dom;SPL;wddx;xml;xmlreader;xmlwriter
★ extension_dir:指定存放动态扩展库的目录,PHP在此目录中寻找动态扩展库,配置方法为extension_dir = "/path/php"
★ include_path:指定require()、include()、fopen_with_path()函数寻找文件的目录列表,其格式和系统的PATH环境变量类似:UNIX下用冒号分隔,Windows下用分号分隔;如UNIX: "/路径名1:/路径名2",Windows: "\路径名1;\ 路径名2",配置方法为include_path= ".:/路径名1:/ 路径名2"
★ doc_root:指定PHP所在的根目录,它只有在非空时有效;如果开启安全模式safe_mode=On,则此目录之外的文件将被拒绝访问,默认值为空,配置方法为doc_root=路径名
★ cgi.force_redirect:指定是否启用CGI强制重定向,建议打开它为PHP以CGI方式运行时提供安全保护,默认值为On,配置方法为cgi.force_redirect=On
★ fastcgi.logging:指定是否记录通过FastCGI进行的连接,默认值为On,配置方法为fastcgi. logging=On
★ async_send:指定是否启用异步发送数据,默认值为Off,配置方法为async_send=Off
★ gd.jpeg_ignore_warning:指定是否忽略JPEG解码器的警告信息,比如无法识别图片格式等,默认值为Off,配置方法为gd.jpeg_ignore_warning=Off
★ memcache.allow_failover:指定是否在遇见错误的时候透明地向其他服务器进行故障转移。说明:memcache是一个高性能分布式的内存对象缓存系统,通过在内存中维护一个统一的巨大的hash表来存储各种格式的数据,如图像、视频、文件以及数据库检索的结果等,默认值为On,配置方法为memcache.allow_failover=On
★ memcache.chunk_size:配置在memcache中数据进行转移时的块大小,如果此值越小则所需的额外网络传输越多,如果发现异常地速度降低,可以尝试将此值增加到32768,配置方法为memcache.chunk_size=8192
★ memcache.default_port:指定连接到memcache服务器的默认TCP端口,配置方法为memcache.default_port=11211
★ memcache.max_failover_attempts:指定连接到memcache服务器失败后的重试次数,配置方法为memcache.max_failover_attempts=20
★ output_buffering:指定输出缓冲区大小,单位为字节;输出缓冲允许在输出正文内容后再发送HTTP头,包括cookies;其结果是输出层减慢一点速度;设置输出缓冲可以减少写入,但是这个参数的实际效果取决于使用的Web服务器以及脚本的内容;建议值为4096~8192,配置方法为output_buffering=0
★ output_handler:指定所有脚本的输出重定向到一个输出处理函数,如果此配置项指定了输出处理函数,输出缓冲output_buffering将被自动启用。
注意:
此配置项只能使用PHP内置的函数,自定义函数必须脚本中调用ob_start()函数;可移植脚本不能依赖该配置项,而应使用ob_start()函数明确指定输出处理函数;不能同时使用"mb_output_handler"和"ob_iconv_handler"两个输出处理函数,也不能同时使用"ob_gzhandler"输出处理函数和zlib.output_compression配置项;如果使用zlib.output_handler配置项开启zlib输出压缩,本项必须设置为空。
默认值为空,配置方法为output_handler=函数名
★ zlib.output_compression:指定是否使用zlib库压缩脚本并输出结果,如果启用该配置项,当浏览器发送"Accept-Encoding:gzip(deflate)"头时,"Content-Encoding:gzip(deflate)"和"Vary:Accept-Encoding"头将加入到应答头当中,可以在应答头输出之前使用ini_set()函数在脚本中启用或禁止这一特性。
注意:
压缩率会受压缩缓冲区大小的影响,如果需要得到更好的压缩质量,需要指定一个较大的压缩缓冲区;如果启用了zlib输出压缩,output_handler配置项必须为空,同时必须设置zlib.output_handler配置项的值。
本配置项的值可以设置为Off、On或者压缩缓冲区大小(默认为4096字节),其默认值为Off,配置方法为zlib.output_compression = Off
★ zlib.output_compression_level:指定zlib的压缩级别,取值范围为0~9,0表示不压缩;值越高效果越好,但CPU占用越多,建议使用1~5;默认值为-1,表示使用zlib内部的默认值(6),配置方法为zlib.output_compression_level=-1
★ zlib.output_handler:指定在启用zlib.output_compression配置项的情况下使用的输出处理函数;启用本配置项后必须将output_handler配置项设置为空。默认值为空,配置方法为zlib. output_handler=函数名
★ safe_mode:指定PHP是否启用安全模式;如果启用PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。默认值为Off,配置方法为safe_mode=Off
★ safe_mode_gid:指定PHP在安全模式下是否在访问文件时做GID比较检查,关闭本配置项时PHP将做更为严格的UID比较检测。默认值为Off,配置方法为safe_mode_gid = Off
★ safe_mode_allowed_env_vars:指定在安全模式下,用户只可以更改的环境变量的前缀列表,用逗号对列表进行分隔;注意允许用户设置某些环境变量,可能会导致潜在的安全漏洞。配置方法为safe_mode_allowed_env_vars = "PHP_"; 注意: 如果这一参数值为空,PHP将允许用户更改任意环境变量!
★ safe_mode_protected_env_vars:指定在安全模式下用户不能更改的环境变量列表,用逗号对列表进行分隔;在本列表中的变量如果又在safe_mode_allowed_env_vars被设置了,那么对于safe_mode_allowed_env_vars这些变量无效。配置方法为safe_mode_protected_env_vars ="LD_LIBRARY_PATH"
★ safe_mode_include_dir:指定在安全模式下,本配置项中组目录和其子目录下的文件被包含时,将跳过UID/GID检查,如果此配置项的值为空,任何UID/GID不符合的文件都不允许被包含;这里设置的目录必须是已经存在于include_path中或者用完整路径来包含;其中Windows下用分号来隔开多个目录,而在Linux下则用冒号;默认值为空,配置方法为safe_mode_include_dir =目录列表
★ safe_mode_exec_dir:指定在安全模式下,只有本配置项中的目录下的可执行程序才允许被以下函数调用:system,escapeshellarg,escapeshellcmd,exec,passthru,proc_close,proc_get_status, proc_nice,proc_open,proc_terminate,shell_exec。配置方法为safe_mode_exec_dir="/usr/local/php/bin"
★ sql.safe_mode:指定是否使用SQL安全模式;默认值为Off,配置方法为sql.safe_mode=Off
★ mysqli.max_links:指定调用mysqli_connect()函数连接MySQL数据库时每个进程中允许的最大连接数,说明:PHP5中提供一个对mysql库改进后的库——mysqli库,mysqli_connect()便是其中的一个库函数。默认值为-1,代表无限制,配置方法为mysqli.max_links=-1。
★ mysqli.default_port:指定调用mysqli_connect()函数连接MySQL数据库时使用的默认TCP端口号;默认值为3306,配置方法为mysqli.default_port=3306
★ mysqli.default_socket:指定调用mysqli_connect()函数连接MySQL服务器时使用的默认套接字名;没有指定则使用内置的MqSQL默认值;默认值为空,配置方法为mysqli.default_socket=TCP或者UDP等
★ mysqli.default_host:指定调用mysqli_connect()函数连接MySQL数据库时使用的默认主机;安全模式下无效,出于安全考虑建议不要在此设置主机名;默认值为空,配置方法为mysqli. default_host=主机名或者主机IP
★ mysqli.default_user:指定调用mysqli_connect()函数连接MySQL数据库时使用的默认用户名;安全模式下无效,出于安全考虑建议不要在此设置用户名;默认值为空,配置方法为mysqli. default_user=用户名
★ mysqli.default_pw:指定调用mysqli_connect()函数连接MySQL数据库时使用的默认密码;注意安全模式下此密码无效,出于安全考虑建议不要在此设置密码;默认值为空,配置方法为mysqli.default_pw=密码
★ mysqli.reconnect:指定PHP是否允许对MySQL进行重新连接,默认值为Off,配置方法为mysqli.reconnect=Off
注意:
这里只是介绍了php.ini中常用的配置项,关于Session、Error和旧版本MySQL函数的常用配置项将在以后相关的章节中详细介绍。