PHP开发过程中的几种调试方法
2014-12-10 18:25
155 查看
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
相关文章推荐
- 在PL/SQL 开发中调试存储过程和函数的一般性方法
- 在PL/SQL开发中调试存储过程和函数的一般性方法
- 在PL/SQL 开发中调试存储过程和函数的一般性方法
- 在php开发过程中去除BOM头的方法
- iOS开发过程中专门在调试时运行代码的方法
- Linux 程序开发打印 Debug 信息的使用技巧--C语言中几种输出调试信息的方法
- 调试--几种调试php的方法
- php断点调试的几种方法讨论
- 使用Eclipse开发Java Web过程中Debug调试的使用方法
- 使用Eclipse开发Java Web过程中Debug调试的使用方法
- php开发过程中关于继承的使用方法分享
- 在PL/SQL 开发中调试存储过程和函数的一般性方法
- 调试--几种调试php的方法
- php开发过程中关于继承的使用方法
- 几种开发过程中避免tomcat重启的方法
- php开发过程中关于继承的使用方法分享
- PHP调试中常用的几种输出方法
- 在PL/SQL 开发中调试存储过程和函数的一般性方法
- 个人在iOS开发过程中真机调试遇到的问题及解决方法
- iOS开发中个人调试的几种方法