PHP开发中值得注意的几个问题(二)

1.关于时区的问题
; Defines the default timezone used by the date functions
;date.timezone =
 
 从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。

1,最简单的方法就是不要用php5.1以上的版本
2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (XXX);
cp无此问题
3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可

也可以自己写个函数来解决此问题
/**
 * Format date and time
 *
 * @param string $format time format
 * @param string $time   timestamp
 *
 * @return string
 */
function getDatetime($format = "Y-m-d H:i:s", $time = "") {
    setTimezone();
    if (empty($format)) $format = "Y-m-d H:i:s";
    if (empty($time)) $time = time();
    return date($format, $time);
}
   
function setTimezone($sTimeZone = "PRC") {
    if (function_exists('date_default_timezone_set')) {
        date_default_timezone_set($sTimeZone); //该函数为PHP5.1内置,这里设置为香港时间。
    }
}

2.关于空字符串的测试
$str = '';
var_dump($str === '');
var_dump($str == '');
var_dump($str !== '');
var_dump($str != '');

bool(true) bool(true) bool(false) bool(false) 

3.php.ini中几个配置
disable_classes =
;SYS
; 该指令接受一个用逗号分隔的类名列表,以禁用特定的类。

disable_functions =
;SYS
; 该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

enable_dl = On
;SYS
; 是否允许使用dl()函数。dl()函数仅在将PHP作为apache模块安装时才有效。
; 禁用dl()函数主要是出于安全考虑,因为它可以绕过open_basedir指令的限制。
; 在安全模式下始终禁用dl()函数,而不管此处如何设置。
; PHP6中删除了该指令,相当于设为Off。

expose_php = On
;SYS
; 是否暴露PHP被安装在服务器上的事实(在http头中加上其签名)。
; 它不会有安全上的直接威胁,但它使得客户端知道服务器上安装了PHP。

open_basedir =
;SYS
; 将PHP允许操作的所有文件(包括文件自身)都限制在此组目录列表下。
; 当一个脚本试图打开一个指定目录树之外的文件时,将遭到拒绝。
; 所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
; 特殊值'.'指定了存放该脚本的目录将被当做基准目录。
; 但这有些危险,因为脚本的工作目录可以轻易被chdir()改变。
; 对于共享服务器,在httpd.conf中灵活设置该指令将变得非常有用。
; 在Windows中用分号分隔目录,UNIX系统中用冒号分隔目录。
; 作为Apache模块时,父目录中的open_basedir路径将自动被继承。
; 指定的限制实际上是一个前缀,而非一个目录名,
; 也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls",
; 如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线。
; 默认是允许打开所有文件。

output_buffering = 0
; 输出缓冲区大小(字节)。建议值为4096~8192。
; 输出缓冲允许你甚至在输出正文内容之后再发送HTTP头(包括cookies)。
; 其代价是输出层减慢一点点速度。
; 设置输出缓冲可以减少写入,有时还能减少网络数据包的发送。
; 这个参数的实际收益很大程度上取决于你使用的是什么Web服务器以及什么样的脚本。

参考:
http://hi.baidu.com/jingweidu/blog/item/82953ffac02b9f1ea9d31124.html

你可能感兴趣的:(PHP开发中值得注意的几个问题(二))