php cannot call constructor,安裝ECshop普遍問題的解決方法

安裝時的問題:

ea56c26ff3e365c3bfdb6d4d22393463.png

1.Strict Standards:?Non-static method cls_image::gd_version() should not be called statically in?/usr/local/httpd2/htdocs/upload/install/includes/lib_installer.php?on line?31

解決:找到install/includes/lib_installer.php中的第31行?? return cls_image::gd_version();

然后在找到include/cls_image.php中的678行,發現gd_version()方法未聲明靜態static,所以會出錯。

這時候只要:

1)將function gd_version()改成static function gd_version()即可(嚴重建議使用此方法!!!)。

2)或者將install/includes/lib_installer.php中的第31行return cls_image::gd_version();改成:

$p = new cls_image();

return $p->gd_version();

2.檢測環境的時候提示:是否支持 JPEG是不支持的。

解決:查看發現有libjpeg.lib庫,GD2庫也有,都加載了,也都正常。查看ecshop源代碼發現install/includes/lib_installer.php中第100行,JPEG寫成了JPG,正確的應該是:

$jpeg_enabled = ($gd_info['JPEG Support']=== true) ? $_LANG['support'] : $_LANG['not_support'];

為何說Ecshop寫錯了,因為打印數組$gd_info的時候,里面的鍵名是:JPEG Support。而$gd_info數組里的值都是直接調用系統環境變量的。

3.默認時區問題:Warning:date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in?/usr/local/httpd2/htdocs/upload/install/includes/lib_installer.php?on line?223

解決:

方法1,修改PHP配置文件。如果你服務器的主要時區是亞洲上海,那么修改這里是比較妥當的,當然更穩妥的辦法是通過.htaccess導入PHP設置。

打開PHP.INI大概在958找到; date.timezone =去掉前面的注釋;號,然后改成date.timezone =Asia/Shanghai,保存配置文件,重啟你的服務器。

方法2,在頁頭使用

ini_set('date.timezone','Asia/Shanghai');

方法3,修改\install\includes\lib_installer.php文件。在這個文件頂部<?php之內加上如下PHP代碼 :

date_default_timezone_set ('Asia/Shanghai');

登錄使用時問題

一,ECshop是基于PHP5.3以下版本開發的,由于PHP5.5版本已廢除了e模式修飾符,因此如果你使用的是PHP5.5以上環境安裝,可能會出現類似以下3種報錯

PHP 5.5. 起, 傳入 "\e" 修飾符的時候,會產生一個 E_DEPRECATED 錯誤; PHP 7.0. 起,會產生 E_WARNING 錯誤,同時 "\e" 也無法起效。

可以使用 preg_replace_callback() 代替。

1,Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in?/usr/local/httpd2/htdocs/upload/includes/cls_template.php?on line?288

解決方法已經在報錯提示中,打開/usr/local/httpd2/htdocs/upload/includes/cls_template.php定位至300行,將原本

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

改為

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

2,Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\php_act\11_ec\upload\includes\cls_template.php on line?555

定位到upload\includes\cls_template.php第555行,將

$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);

改為

$val=preg_replace_callback("/\[([^\[\]]*)\]/is",function($r){return '.'.str_replace('$','\$',$r[1]);},$val);

3,Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\php_act\11_ec\upload\includes\cls_template.php on line?1075

定位到?upload\includes\cls_template.php on line?1075,將

$pattern = '/.*?/se';

$replacement = "'{include file='.strtolower('\\1'). '}'";

$source = preg_replace($pattern, $replacement, $source);

改為一行

$source = preg_replace_callback('/.*?/s', function($r){return '{include file='.strtolower($r[]). '}';}, $source);

4,Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\php_act\11_ec\upload\includes\cls_template.php on line?496

定位到upload\includes\cls_template.php on line?496

$out = "<?php \n" . '$k = ' . preg_replace("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";

改為

$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/" , function($r){return stripslashes(trim($r[],'\''));}, var_export($t, true)) . ";\n";

二,PHP5.3以上默認只能傳遞具體的變量,而不能通過函數返回值傳遞

1,Strict standards: Only variables should be passed by reference in?/usr/local/httpd2/htdocs/upload/includes/cls_template.php?on line 423

定位upload/includes/cls_template.php?on line?423:

$tag_sel = array_shift(explode(' ', $tag));

改為

$tag_sel = explode(' ', $tag);

$tag_sel = array_shift($tag_sel);

2,Strict standards: Only variables should be passed by reference in F:\php_act\11_ec\upload\includes\lib_main.php on line?1329

定位到upload\includes\lib_main.php on line?1329

$ext = end(explode('.', $tmp));

改為

$_end=explode('.', $tmp);

$ext = end($_end);

三,Strict standards: Redefining already defined constructor for class XXX

此報錯是使用PHP5.4以上版本安裝ecshop可能出現的,例如本人安裝后登錄管理后臺顯示不出驗證碼這個情況:

97aec1377ccaaf344c2ac5d60af1292c.png

右鍵驗證碼處點擊“復制圖片網址”后打開,便能看到這個錯誤。

打開報錯所在文件看到如下代碼:

function captcha($folder = '', $width = 145, $height = 20)

{

if (!empty($folder))

{

$this->folder = $folder;

}

$this->width = $width;

$this->height = $height;

/* 檢查是否支持 GD */

if (PHP_VERSION >= '4.3')

{

return (function_exists('imagecreatetruecolor') || function_exists('imagecreate'));

}

else

{

return (((imagetypes() & IMG_GIF) > 0) || ((imagetypes() & IMG_JPG)) > 0 );

}

}

function __construct($folder = '', $width = 145, $height = 20)

{

$this->captcha($folder, $width, $height);

}

可以看到其中使用和類名相同點函數名作為構造函數是php4時代的寫法,php5時代的構造函數是 __construct(),ecshop為了兼容老版本的php,所以采用了上面的寫法,但是從php5.4開始,對于這樣的兩種寫法同時出現的情況,要求必須__construct()在前,同名函數在后,所以只需要對調兩個函數的位置即可。

四,mktime()問題

1,Strict standards: mktime(): You should be using the time() function instead in F:\php_act\11_ec\upload\admin\sms_url.php on line?31

定位到upload\admin\sms_url.php on line?31

$auth = mktime();

改為

$auth = time();

2,?Strict standards: mktime(): You should be using the time() function instead in F:\php_act\11_ec\upload\admin\shop_config.php on line?32

定位到upload\admin\shop_config.php on line?32,修改同上

安裝office2010提示要安裝MSXML6&period;10&period;1129&period;0解決方法

系統win7 32位 安裝office2010出現了錯誤,提示要安裝MSXML6.10.1129.0解決方法 1.下載MSXML6.10.1129.0進行安裝 2.若本機已安裝過不管用: a.在運行里 ...

VS2008 SP1 安裝卡在 VS90sp1-KB945140-X86-CHS的解決方法

VS2008 SP1 安裝卡在 VS90sp1-KB945140-X86-CHS的解決方法 VS2008 SP1 安裝卡在 VS90sp1-KB945140-X86-CHS的解決方法 方法一:(不推薦 ...

【轉】chrome 67版本后無法拖拽離線安裝CRX格式插件的解決方法

第一種:開啟開發者模式即可?(推薦) chrome? 的設置 -> 更多工具 -> 擴展程序,開啟開發者模式即可! 第二種方法:修改參數 首先打開下面地址:chrome://flags/# ...

ubuntu安裝vmplayer出現問題的解決方法

ubuntu安裝vmplayer 出現問題的解決方法 1:ubuntu12.04安裝vmware12出現cannot ope dev/vmmon及modprobe vmmon提示密鑰無效的解決辦法 筆 ...

Tomcat安裝教程及常見錯誤解決方法

目錄 Tomcat安裝教程及常見錯誤解決方法 一.安裝前準備 ·熟悉自己電腦的操作系統版本(32位or64位) ·保證電腦上已經裝好JDK,并且已經設置好環境變量. 二.Tomcat安裝教程(以Tom ...

php5&period;4下安裝ECshop出現錯誤的解決辦法

轉:http://www.programmernote.com/?p=65 1.安裝是會提示 Warning: date_default_timezone_get(): It is not safe ...

安裝Mysql提示1045錯誤解決方法

MySQL安裝提示一下錯誤 The security settings could not be applied to the database because the connection has ...

Windows Server 2008 R2安裝WAMPSERVER無法啟動的解決方法

其實根本不算什么解決方法,會者不難的事.Windows Server 2008 R2(也包括其他版本的Windows)默認狀態下安裝WAMPSERVER經常是無法順利啟動WAMPSERVER的,尤其是 ...

Linux搭建python環境中cx&lowbar;Oracle模塊安裝遇到的問題與解決方法

安裝或使用cx_Oracle時,需要用到Oracel的鏈接庫,如libclntsh.so.11.1,否則會有各種各樣的錯誤信息. 安裝Oracle Instant Client就可得到這個鏈接庫,避免 ...

隨機推薦

vtkQuadric創建二次曲面

在本實例中,我們將用到vtkQuadric.vtkSampleFunction.vtkContourFilter三個類,分別是二次曲面函數.函數曲面抽樣和等高濾波. vtkQuadric負責二次曲面基 ...

Spring MVC重定向和轉發及異常處理

SpringMVC核心技術---轉發和重定向 當處理器對請求處理完畢后,向其他資源進行跳轉時,有兩種跳轉方式:請求轉發與重定向.而根據要跳轉的資源類型,又可分為兩類:跳轉到頁面與跳轉到其他處理器.對于 ...

詳解 ML2 Core Plugin(I) - 每天5分鐘玩轉 OpenStack(71)

我們在 Neutron Server 小節學習到 Core Plugin,其功能是維護數據庫中 network, subnet 和 port 的狀態,并負責調用相應的 agent 在 network ...

PHP守護進程

php也是可以直接進行守護進程的啟動與終止的,相對于shell來說會簡單很多,理解更方便,當然了php的守護進程要實現自動重啟還是要依賴于shell的crontab日程表,每隔一段時間去執行一次腳本看 ...

從&OpenCurlyDoubleQuote;程序員轉行賣燒餅”想到IT人創業

我的一個朋友最近總在跟我念叨著“我不想做開發了,整天累死累活寫程序,也攢不下幾個錢.我想辭職搞點啥!” 我問他:“你想搞點啥?”. 他說:“搞啥都比做開發強,做個網站賺廣告費,接私活……實在不行我去賣 ...

&period;NET中開源CMS目錄

提起開源cms,大家第一想到的是php的cms,因為php開源的最早,也最為用戶和站長們認可,隨著各大cms系統的功能的不斷完善和各式各樣的開源cms的出現,.net和java的高端的cms系統也逐漸 ...

面向新手的Webserver搭建(一)——IIS的搭建

非常多童鞋說自己是做移動開發的,想掛個簡單的Web API,但是server又不會搭,這樣一來測試就成了問題.看看網上的教程.發現略難懂,并且大多是一個轉一個,沒價值,所以干脆寫幾篇文章講講簡單的We ...

HTML meta refresh 刷新與跳轉&lpar;重定向&rpar;頁面

可用于 ...

Reverse Words in a String leetcode

Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...

Python把給定的列表轉化成二叉樹

在LeetCode上做題時,有很多二叉樹相關題目的測試數據是用列表給出的,提交的時候有時會出現一些數據通不過,這就需要在本地調試,因此需要使用列表來構建二叉樹,方便自己調試.LeetCode上二叉樹結 ...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534444.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wind試用版 matlab,免費產品試用 - MATLAB Simulink

請選擇其一AlabamaAlaska美屬薩摩亞APO/FPO AAAPO/FPO AEAPO/FPO APArizonaArkansasCaliforniaCaroline IslandsColoradoConnecticutDelawareDistrict of ColumbiaFlorida格魯吉亞關島HawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMariana Islands馬紹爾群島Mar…

php yii2 sns,GitHub - yggphpcoder/iisns: 基于 yii2 的 sns 社區系統,一站式解決社區建站...

iisns - 地球村入口iiSNS 是基于 yii2 的 SNS 社區系統&#xff0c;一站式解決社區建站。可以寫文章&#xff0c;做記錄&#xff0c;上傳圖片&#xff0c;論壇聊天等。還可以用來做內容管理系統(CMS)。iiSNS 是一個免費的開源項目&#xff0c;在 MIT 許可證下授權發布。特點與功…

php mvc 商城,基于MVC框架的小型網上商城設計

2&#xff0e;本人對課題任務書提出的任務要求及實現預期目標的可行性分析基于MVC框架的小型網上商城實現的功能&#xff1a;商品的瀏覽、查詢、購買&#xff0c;會員注冊以及會員訂單的查詢等&#xff0c;方便商場活動&#xff0c;該系統基本實現了網上商城的應有功能。該系統…

php 做更新進度條,PHP exec()后更新Bootstrap進度條

我使用PHP來運行一個python腳本&#xff0c;并且在腳本執行后需要更新一個進度條。進度條更新后&#xff0c;將執行另一個腳本&#xff0c;依此類推。這里是我的代碼如此的票價。我試圖用JavaScript來實現。它沒有解決Button Textif (isset($_POST[turn])){exec("sudo pyt…

zblog php和asp功能,ZBlog是否適合PHP或ASP?我們該如何選擇?

我最近玩了zblog一段時間&#xff0c;對于大多數第一次聯系zblog的博客&#xff0c;他們會問zblog是否適合PHP或ASP&#xff1f;我們該如何選擇&#xff1f;事實上&#xff0c;我真的不明白這個問題。我個人更喜歡PHP。今天我將整理出來并對PHP版本和ASP版本進行比較&#xff0…

php js記住密碼功能,jquery.cookie.js實現用戶登錄保存密碼功能的方法_jquery

本文實例講述了jquery.cookie.js實現用戶登錄保存密碼功能的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;需要導入的js有jquery.js和jquery.cookie.js在頁面加載時首先嘗試獲取cookie的值&#xff0c;如果cookie有值&#xff0c;則將獲取到的值填入輸入框中&am…

oracle dbf 超大,oracle?數據庫users01.dbf文件過大?轉移方法

如果出現 linux 拒絕錯誤&#xff0c;可以把目錄權限 該為777由于在安裝的時候將Oracle安裝到了C盤&#xff0c;表空間也創建到了C盤(當時沒有在意)&#xff0c;等項目進行到了中期&#xff0c;發現C盤的空間不夠用了。此時&#xff0c;一個較好的解決辦法就是將表空間的文件轉…

oracle中exists連接兩個表,IN、EXISTS、多表連接,哪個速度更快

本帖最后由 ghsau 于 2011-10-11 23:39 編輯請看下面三個執行計劃(Oracle10g)1. 用INSQL> select ename from emp e where e.deptno in (select d.deptno from dept d where d.dnameSALES);PLAN_TABLE_OUTPUT------------------------------------------------------------…

php決策管理,報表管理與數據分析:為系統未來發展規劃提供決策依據,有效避免IT管理與投資的盲目??...

據了解&#xff0c;很多中大型企事業單位的IT基礎結構具有復雜、分散等特征&#xff0c;并且信息化程度越高&#xff0c;數據類型越繁雜&#xff0c;數據量也越龐大。許多單位不得不付出極大的人力、物力對網絡進行管理。而一個單位的信息化的程度和IT部門的服務水平&#xff0…

oracle遷移undo表空間,oracle切換undo表空間

Oracle里的回滾表空間在數據庫使用一段時間后&#xff0c;undo表空間的dbf文件往往會增長到比較大&#xff0c;這個時候我們需要切換undo表空間1.新建undo表空間SQL> create undo tablespace undotbs2 datafile /data/undotbs02.dbf size 10M autoextend on next 10M ;2.由于…

pppoe linux 配置文件,linux PPPOE服務端配置

查看pppo服務器安裝包pm -qa | grep pppoe 可以看到系統中pppoe server安裝包rpm -ql rp-pppoe-3.5-2 查看該安裝包安裝信息(如安裝路徑,配置文件等),如果有信息輸出,你可以看到這一行:/sbin/pppoe-serverps -e | grep pppoe-serve 查看pppoe服務有沒有運行,如果沒有,則啟動: p…

設置linux撥號服務端,CentOS Linux上搭建PPPoE服務器及撥號設置

CentOS下PPPoE撥號設置1.查看并安裝撥號軟件&#xff1a;[rootRedHat ~]# rpm -qa|grep pppoe[rootredhat ~]# yum -y install rp-pppoerp-pppoe.i686 0:3.10-8.el62.查看adsl-setup命令所在位置&#xff1a;[rootredhat ~]#whereis adsl-setupadsl-setup:或者直接搜索pppoe信息…

Linux原始網絡編程,Linux操作系統網絡編程 原始套接字 (1)

Linux操作系統網絡編程--原始套接字 (1)http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml我們在前面已經學習過了網絡程序的兩種套接字(SOCK_STREAM,SOCK_DRAGM).在這一章 里面我們一起來學習另外一種套接字--原始套接字(SOCK_RAW)。應用原始套接字,我們可以編寫…

linux上pyenv卸載,在Ubuntu 18.04系統下安裝pyenv的方法

本文介紹在Ubuntu 18.04操作系統下安裝pyenv的方法&#xff0c;使用它可以進行Python多版本管理&#xff0c;目的是防止不同的Python版本因為不兼容而出現錯誤。安裝pyenv其實非常的簡單&#xff0c;只需要在系統終端中運行一條命令即可&#xff0c;以下是操作方法&#xff0c;…

linux防火墻作用是什么,Linux防火墻操作1

什么是防火墻防火墻可通過監測、限制、更改跨越防火墻的數據流&#xff0c;盡可能地對外部屏蔽網絡內部的信息、結構和運行狀況&#xff0c;以此來實現網絡的安全保護。簡單來講 就是防止外界通過網絡攻擊Linux服務器的一個軟件本次學習目標&#xff1a;防火墻的啟停&#xff0…

linux中touch命令的作用,Linux中touch命令的作用是什么

今天微子網絡向你展示了觸摸命令在Linux中的功能。內容簡潔易懂&#xff0c;一定會讓你眼前一亮。希望通過這篇文章的詳細介紹&#xff0c;你能有所收獲。linux的Touch命令不常用&#xff0c;但在使用make時可能會用到&#xff0c;make用于修改文件時間戳或創建一個不存在的新文…

linux打jar包xml文件,springboot打jar包部署外置配置文件

一、讀取配置文件的優先級默認&#xff1a;Jar包同級目錄的config目錄Jar包同級目錄classPath(即resources目錄)的config目錄classpath目錄最高優先級的方式是項目啟動時通過命令的方式指定項目加載核心配置文件&#xff0c;命令如下java –jar xxxx.jar -Dspring.config.locat…

linux將視頻導入到iphone,如何將 IPhone 的文件導入 Linux

如何將 IPhone 的文件導入 Linux完全免費方案。方法一&#xff1a; 使用 Koder 的 Local File Access 功能這方法不需要在 Linux 端做任何配置。IPhone 端安裝 koder進入應用 Koder點擊右下角的 Settings進入 Local File Access選擇 Enable Local File Access你可以看到一個鏈接…

lede 自定義linux,OpenWrt 和 LEDE 宣布正式合并

OpenWrt 和 LEDE 項目已在官網正式宣布合并&#xff0c;合并后的項目仍用 OpenWRT 命名。合并后的 OpenWrt 項目將按照 LEDE 制定的規范進行管理。原有的 LEDE 和 OpenWrt 項目的活躍成員將繼續在合并后的 OpenWrt 上工作。LEDE 項目是 OpenWrt 的一個衍生項目&#xff0c;曾被…

centos系統linux復制命令行,linux系統CentOS7中find命令使用

一、作用查找文件或目錄二、參數(常用)-atime 查找在指定時間曾被存取過的目錄或文件&#xff0c;單位以24小時計算。(訪問時間&#xff0c;執行文件等)-ctime 查找指定時間曾被更改的目錄或文件&#xff0c;單位以24小時計算。(文件權限&#xff0c;用戶組等等)-mtime 查看指定…