PHP开发中值得注意的几个问题(二)
来源:互联网 发布:淘宝可以不发货吗 编辑:程序博客网 时间:2024/05/17 09:37
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
; 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
0 0
- PHP开发中值得注意的几个问题(二)
- PHP开发中值得注意的几个问题
- PHP开发中值得注意的几个问题(三)
- java中泛型使用中值得注意的几个问题
- OA中值得深思的几个问题
- java中值得注意的
- 【Android】开发过程中值得注意的问题及解决方案
- ATL中值得注意的C++技术
- java中值得注意的问题
- Java中值得注意的细节1
- Java中值得注意的细节2
- struts中值得注意的小知识点
- ajax中值得注意的地方
- Javascript中值得注意的用法
- mysql手册中值得注意的知识点
- Thread类中值得注意的方法
- html中值得注意的一点事
- java中值得注意的细节
- 从trc查找死锁的问题
- PHP中用file_get_contents抓取网页
- Zend studio编辑器快捷键使用及字体修改
- PHP中打开或包含远程文件时要注意的问题
- linux中文简繁体转换
- PHP开发中值得注意的几个问题(二)
- PHP开发中值得注意的几个问题
- eclipse 启动 tomcat 报was not found on the java.library.path 错误的解决办法
- (转)Windows下安装OpenSSL及其使用
- PHP开发中值得注意的几个问题(三)
- VS2013 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法
- 微信伪装地理位置教程
- Android学习之EditText
- UVA 10181 15-Puzzle Problem IDA* 剪枝