php提示Redefining already defined constructor for class 错误
本地PHP环境PHP5.4,安装ecshop2.7.3后,很多地方会报如下的错
Redefining already defined constructor for class XXX
检查代码可以发现,对应的位置是某个类的构造函数,具体写法如下:
/**
* 构造函数
*
* @access public
* @param
*
* @return void
*/
function alipay()
{
}
function __construct()
{
$this->alipay();
}
其中使用和类名相同点函数名作为构造函数是php4时代的写法,php5时代的构造函数是 __construct(),ecshop为了兼容老版本的php,所以采用了上面的写法。
但是从php5.4开始,对于这样的两种写法同时出现的情况,要求必须__construct()在前,同名函数在后,所以只需要对调两个函数的位置即可。
date()函数是获得服务器当时时间了,但我们会发现如果刚安装好的php环境使用date()会有几个问题了,如时间不正确或提示date()使用报错了,下面一起来看看问题解决办法。
通过date()函数获取时间后,发现小时时间不对,比现在的时间小8个小时,无论用H,还是用h都一样,这个是因为当前获取的是格林威治时间,与北京时间相差8小时。
解决方法如下
:
1、修改php.ini配置文件
打开php.ini文件,一般在php配置根目录下,找到其中的 ;date.timezone,删掉前面的分号,并改为date timezone = PRC。保存,重启Apahce服务即可(有时用restart会有问题,先stop然后start就行了)。
2、加上date_default_timezone_set(timezone_identifier)函数
这个函数的意思是,设置当前时区,对时间进行初始化,在页头或获取时间语句前加上这句话。
例如:
date_default_timezone_set(PRC);
echo date("Y-m-d H-i-s");
参数如下设置:
date_default_timezone_set(PRC) –设置为北京时间,PRC代表中华人民共和国
date_default_timezone_set(‘Asia/Shanghai’) –设置为上海时间,大陆可用的还有‘Chongqi’(重庆)、‘Urumqi’(乌鲁木齐)同样可以的
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
新加坡地区:Asia/Singapore (好像就是没看到北京的)
此函数永远会返回True,但一定要输入timezone_identifier,不然会报错。
下面是所有的时区标识符:(供大家参考)
CET
CST6CDT
Cuba
EET
Egypt
Eire
EST
EST5EDT
Etc/GMT
Etc/GMT+0
Etc/GMT+1
Etc/GMT+10
Etc/GMT+11
Etc/GMT+12
Etc/GMT+2
Etc/GMT+3
Etc/GMT+4
Etc/GMT+5
Etc/GMT+6
Etc/GMT+7
Etc/GMT+8
Etc/GMT+9
Etc/GMT-0
Etc/GMT-1
Etc/GMT-10
Etc/GMT-11
Etc/GMT-12
Etc/GMT-13
Etc/GMT-14
Etc/GMT-2
Etc/GMT-3
Etc/GMT-4
Etc/GMT-5
Etc/GMT-6
Etc/GMT-7
Etc/GMT-8
Etc/GMT-9
Etc/GMT0
Etc/Greenwich
Etc/UCT
Etc/Universal
Etc/UTC
Etc/Zulu
Factory
GB
GB-Eire
GMT
GMT+0
GMT-0
GMT0
Greenwich
Hongkong
HST
Iceland
Iran
Israel
Jamaica
Japan
Kwajalein
Libya
MET
MST
MST7MDT
Navajo
NZ
NZ-CHAT
Poland
Portugal
PRC
PST8PDT
ROC
ROK
Singapore
Turkey
UCT
Universal
UTC
W-SU
WET
朋友的一个网站导出会员信息时,导出的csv文件中的身份证号码显示为科学计数法,最后几位直接显示为0,解决的办法其实很简单其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
$idcard = “\t”.$idcard;
顺便看到如果是phpexcel导出的话,把”\t”换成” “即可(双引号直接有个空格)
以前我们是使用php生成下载文件时使用中文乱码了这个问题不会影响到文件的打开使用了,但小编今天 碰到下载文件打开乱码与文件损坏问题了,那么此问题要如何来处理 ?具体操作步骤如下最近更新一个项目,下载部分沿用了之前一个项目的下载代码,可是这次出现了一个小问题,下载的word等文件就提示乱码,下载rar等文件则直接提示文件已经损坏,找了许久也没最终确定原因。胡乱解决后莫名其妙的解决了问题,记录一下,原因待补充。
$extend = explode('.', $file_info->path);
$ext = array_pop($extend);
$file_name = $file_info->file_name .'.'.$ext;
$file = fopen($file_info->path,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_info->path));
Header("Content-Disposition: attachment; filename=".$file_name);
ob_clean(); ## 这里是新增的代码
flush(); ## 这里是新增的代码
echo fread($file, filesize($file_info->path));
fclose($file);
注意:下载文件名如果为中文会乱码我们可以把它转成utf8或拼音即可解决
phpmyadmin无法登陆无响应一般是session或cookie设置问题了,下文小编也是因为cookie与 session目录设置问题导致phpmyadmin不能正常登录了。之前由于修改php.ini配置session路径问题,导致PHPmyadmin无法登陆,点击登录后自动刷新跳到index页面。检查头信息发现报错:
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly。
可以看出来是session问题,解决办法:
1.打开php.ini修改session.save-path,例如/tmp
2.设置/tmp目录权限>755
3.重启Apache:sudo /etc/init.d/apache2 restart
相关文章
一文彻底理解js原生语法prototype,__proto__和constructor
作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,下面这篇文章主要给大家介绍了关于js原生语法prototype,__proto__和constructor的相关资料,需要的朋友可以参考下...2021-10-24@PostConstruct在项目启动时被执行两次或多次的原因及分析
这篇文章主要介绍了@PostConstruct在项目启动时被执行两次或多次的原因及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-03JavaScript精炼之构造函数 Constructor及Constructor属性详解
除了创建对象,构造函数(constructor) 还做了另一件有用的事情―自动为创建的新对象设置了原型对象(prototype object) 。原型对象存放于 ConstructorFunction.prototype 属性中。例如,我们重写之前例子,使用构造函数创建...2015-11-08php示例详解Constructor Prototype Pattern 原型模式
原型模式中主要角色 抽象原型(Prototype)角色:声明一个克隆自己的接口 具体原型(Concrete Prototype)角色:实现一个克隆自己的操作当一个类大部分都是相同的只有部分是不同的时候,如果需要大量这个类的对象,每次都重复实...2015-10-21详解JavaScript中的构造器Constructor模式
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。通过本文给大家分享JavaScript中的构造器Constructor模式,对构造器constructor相关知识感兴趣的朋友一起学习吧...2016-01-15- constructor 属性返回对创建此对象的数组函数的引用。本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧...2016-04-22
php提示Redefining already defined constructor for class 错误
使用是公司同事以前的电脑了它用的是php2.17了,小编觉得它旧了于时升级到了php5.4了,结果发现运行ecshop中现Redefining already defined constructor for class 错误了...2016-11-25- __construct 构造函数 类在被实例化时就会执行. construct 自定义的函数或方法. <?php class myName{ function __construct($myName){ //连续两个下划线 e...2016-11-25
js老生常谈之this,constructor ,prototype全面解析
下面小编就为大家带来一篇js老生常谈之this,constructor ,prototype。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-04-06关于@PostConstruct、afterPropertiesSet和init-method的执行顺序
这篇文章主要介绍了关于@PostConstruct、afterPropertiesSet和init-method的执行顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-15浅谈ThinkPHP中initialize和construct的区别
下面小编就为大家带来一篇浅谈ThinkPHP中initialize和construct的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-04-03浅谈SpringBoot中的Bean初始化方法 @PostConstruct
这篇文章主要介绍了SpringBoot中的Bean初始化方法 @PostConstruct,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-29解决Redefining already defined constructor for class...的问题
本地PHP环境PHP5.4,安装ecshop2.7.3后,很多地方会报如下的错 Redefining already defined constructor for class XXX 检查代码可以发现,对应的位置是某个类的构造函数,具体写法如下: 其中使用和类名相同点函数名作为构造函数是php4时代的写法,php5时代的构造函数是 __construct(),ecshop为了兼容老版本的php,所以采用了上面的写法。 但是从php5.4开始,对于这样的两种写法同时出现的情况,要求必须__cons...2015-12-04