php.ini详细介绍与配置 (9)
2009-07-21 11:27:17 www.hackbase.com 来源:互联网
关于php.ini 这个文件必须命名为'php.ini'并放置在httpd.conf中PHPINIDir指令指定的目录中。 最新版本的php.ini可以在下面两个位置查看: http://cvs.php.net/viewvc.cgi/php-src/php.i ...
/path/to/php"
存放扩展库(模块)的目录,也就是PHP用来寻找动态扩展模块的目录。
Windows下默认为"C:/php5"
[PHP-Core-HTTP]
default_mimetype = "text/html"
default_charset = "gb2312"
PHP默认会自动输出"Content-Type: text/html" HTTP头。
如果将default_charset指令设为"gb2312",
那么将会自动输出"Content-Type: text/html charset=gb2312"。
PHP6反对使用default_charset指令,而推荐使用unicode.output_encoding指令。
[PHP-Core-Unicode]
PHP6基于ICU(International Components for Unicode)库提供了全面的Unicode支持。
编译时需要使用--with-icu-dir=<dir>指定ICU头文件和库的安装位置。
除detect_unicode外,其他都是PHP6新增的指令。
PHP6的信息目前还很缺乏,所以此部分内容可能不完整甚至有错误。
detect_unicode = On
指示Zend引擎是否通过检查脚本的BOM(字节顺序标记)来检测脚本是否包含多字节字符。
建议关闭。PHP6已经取消了此指令而用unicode.script_encoding指令来代替其功能。
unicode.semantics = Off
是否启用Unicode支持。
如果打开此指令,那么PHP将变成一个完全的Unicode环境,比如:
所有字符串和从HTTP接受的变量都将变成Unicode,所有PHP标识符也都可以使用Unicode字符。
而且,PHP内部将使用Unicode字符串并负责对外围非Unicode字符进行自动转换,
比如:HTTP输入输出、流、文件系统操作等等,甚至连php.ini自身都将按照UTF-8编码来解析。
开启这个指令后,你必须明确指定二进制字符串。PHP将不对二进制字符串的内容做任何假定,
因此你的程序必须保证能够恰当的处理二进制字符串。
如果关闭这个指令,PHP的行为将和以前的行为完全相同:
字符串不会变成Unicode,文件和二进制字符串也将向后兼容,php.ini也将按照"as-is"风格解析。
不管是否打开此指令,所有的函数和操作符都透明的支持Unicode字符串。
unicode.fallback_encoding = UTF-8
为其他所有unicode.*_encoding指令设置默认值。
也就是说如果某个unicode.*_encoding指令未明确设置的话,将使用此处设置的值。
unicode.runtime_encoding =
运行时编码指定了PHP引擎内部转换二进制字符串时使用的编码。
此处的设置对于I/O相关操作(比如:写入标准输出/读取文件系统/解码HTTP输入变量)没有影响。
PHP也允许你明确的对字符串进行转换:
(binary)$str -- 转化为二进制字符串
(unicode)$str -- 转化为Unicode字符串
(string)$str -- 如果unicode.semantics为On则转化为Unicode字符串,否则转化为二进制字符串
例如,如果该指令的值为iso-8859-1并且$uni是一个Unicode字符串,那么
$str = (binary)$uni
将等到一个使用iso-8859-1编码的二进制字符串。
在连接、比较、传递参数等操作之前PHP会将相关字符串隐含转换为Unicode,然后再进行操作。
比如在将二进制字符串与Unicode进行连接的时候,
PHP将会使用这里的设置将二进制字符串转换为Unicode字符串,然后再进行操作。
unicode.output_encoding =
PHP输出非二进制字符串使用的编码。
自动将'print'和'echo'之类的输出内容转换为此处设定的编码(并不对二进制字符串进行转换)。
当向文件之类的外部资源写入
存放扩展库(模块)的目录,也就是PHP用来寻找动态扩展模块的目录。
Windows下默认为"C:/php5"
[PHP-Core-HTTP]
default_mimetype = "text/html"
default_charset = "gb2312"
PHP默认会自动输出"Content-Type: text/html" HTTP头。
如果将default_charset指令设为"gb2312",
那么将会自动输出"Content-Type: text/html charset=gb2312"。
PHP6反对使用default_charset指令,而推荐使用unicode.output_encoding指令。
[PHP-Core-Unicode]
PHP6基于ICU(International Components for Unicode)库提供了全面的Unicode支持。
编译时需要使用--with-icu-dir=<dir>指定ICU头文件和库的安装位置。
除detect_unicode外,其他都是PHP6新增的指令。
PHP6的信息目前还很缺乏,所以此部分内容可能不完整甚至有错误。
detect_unicode = On
指示Zend引擎是否通过检查脚本的BOM(字节顺序标记)来检测脚本是否包含多字节字符。
建议关闭。PHP6已经取消了此指令而用unicode.script_encoding指令来代替其功能。
unicode.semantics = Off
是否启用Unicode支持。
如果打开此指令,那么PHP将变成一个完全的Unicode环境,比如:
所有字符串和从HTTP接受的变量都将变成Unicode,所有PHP标识符也都可以使用Unicode字符。
而且,PHP内部将使用Unicode字符串并负责对外围非Unicode字符进行自动转换,
比如:HTTP输入输出、流、文件系统操作等等,甚至连php.ini自身都将按照UTF-8编码来解析。
开启这个指令后,你必须明确指定二进制字符串。PHP将不对二进制字符串的内容做任何假定,
因此你的程序必须保证能够恰当的处理二进制字符串。
如果关闭这个指令,PHP的行为将和以前的行为完全相同:
字符串不会变成Unicode,文件和二进制字符串也将向后兼容,php.ini也将按照"as-is"风格解析。
不管是否打开此指令,所有的函数和操作符都透明的支持Unicode字符串。
unicode.fallback_encoding = UTF-8
为其他所有unicode.*_encoding指令设置默认值。
也就是说如果某个unicode.*_encoding指令未明确设置的话,将使用此处设置的值。
unicode.runtime_encoding =
运行时编码指定了PHP引擎内部转换二进制字符串时使用的编码。
此处的设置对于I/O相关操作(比如:写入标准输出/读取文件系统/解码HTTP输入变量)没有影响。
PHP也允许你明确的对字符串进行转换:
(binary)$str -- 转化为二进制字符串
(unicode)$str -- 转化为Unicode字符串
(string)$str -- 如果unicode.semantics为On则转化为Unicode字符串,否则转化为二进制字符串
例如,如果该指令的值为iso-8859-1并且$uni是一个Unicode字符串,那么
$str = (binary)$uni
将等到一个使用iso-8859-1编码的二进制字符串。
在连接、比较、传递参数等操作之前PHP会将相关字符串隐含转换为Unicode,然后再进行操作。
比如在将二进制字符串与Unicode进行连接的时候,
PHP将会使用这里的设置将二进制字符串转换为Unicode字符串,然后再进行操作。
unicode.output_encoding =
PHP输出非二进制字符串使用的编码。
自动将'print'和'echo'之类的输出内容转换为此处设定的编码(并不对二进制字符串进行转换)。
当向文件之类的外部资源写入
关键字:php.ini
责任编辑:Jason
本文引用网址:









