Ecshop安裝的坑,建議不要使用!

2022-03-05 10:14:44 字數 2345 閱讀 5994

最近因為工作的需要,安裝了下ecshop,這個曾經的火爆開源程式,現在也呈現出疲態。

1、請看官方的執行環境推薦:

伺服器端執行環境推薦

·php版本5.0以上5.3以下的版本(推薦使用5.2系列版本)

·mysql版本5.0及以上

·空間安裝zend

·空間支援檔案鎖功能

·開啟gd功能

·mysql函式支援mbstring、iconv、fsockopen

看見了吧,php5.3以下的版本,還推薦使用5.2的,尼妹的,現在哪個虛擬機器還敢用5.3以下的版本?還在用5.3以下的版本?看看tiandi用的2兩個主機,衡天的和wopus的都是5.3.28,至於為什麼不用5.3以下的版本,自己google」php記憶體洩露」。

ecshop上個月剛更新了最新版本,寫**的思路依舊堅挺,仍舊使用5.2版本,好吧,為了做一些測試,需要在本機上進行除錯,但本機上裝了wp3.9,忘了從哪個版本開始wp只支援5.3以上的php,所以本機的php環境是5.4.13。起先,做了兩個批處理來切換php5.2.1和php5.4.13,然後發覺一直用批處理切換也累啊,索性直接5.4.13上跑ecshop看看**有問題就改**吧,結果泥煤的首頁直接來個錯誤。

strict standards: only variables should be passed by reference in d:\tiandiyoyo\hengtian\ecshop\upload\includes\cls_template.php on line 424

不淡定了,開啟cls_template.php,定位到424行,發現下面內容:

**如下

複製**

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

將其注釋掉,分別拆開,新增兩行

**如下

複製**

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

$tag_sel = array_shift($tag_tmp);

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

原因在於php5.3版本開始,array_shift不支援函式返回,記得之前部落格裡好像還有個帖子專門說了php5.3版本的改變,剛搜尋沒找到

以上是複製其他大神的作品,這裡呢再新增一點我自己的東西,我使用的是php5.5進行安裝,首先遇到的問題就是版本的問題導致的函式不相容,我是菜鳥,在做好了這幾個之後突然發現,php5.3以下有乙個叫做記憶體洩漏的問題,就是在php5.3版本之前,記憶體管理用的是引用計數。當兩個或者多個變數互相應用成環狀時,便會出現記憶體洩露。5.3以後改進了記憶體管理的演算法,會好很多。

所謂記憶體洩漏是指進稱在執行過程中,記憶體的占有率逐步公升高,不釋放, 系統所擁有的可用記憶體越來越少的現象。

php-fpm耗光記憶體,不釋放,就是所謂的記憶體洩漏,記憶體洩漏對長期執行的程式有威脅,所以應該定期重啟程序,例如php-fpm裡面有個配置,max-request,就是控制fast-cgi程序處理多少個請求後重啟,這樣系統可用釋放記憶體,但是如果記憶體佔用率增長速度非常快,頻繁重啟程序,就會影響服務的穩定性,所以這個問題必須正面解決。

真是悲劇

web程式做效能優化也是這個思路,但是要簡單很多,無需寫**,在nginx log裡面加上$request_time ,用awk/sort 處理一下就可以找出瓶頸。

可能有很多的讀者碰到過類似下面的錯誤吧:

fatal error: allowed memory size of x bytes exhausted (tried to allocate y bytes)
這個錯誤的資訊很明確,php已經達到了允許使用的最大記憶體了,通常上來說這很有可能是我們的程式編寫的有些問題。比如:一次性讀取超大的檔案到記憶體中,或者出現超大的陣列,或者在大迴圈中的沒有及時是放掉不再使用的變數,這些都有可能會造成記憶體占用過大而被終止。

php預設的最大記憶體使用大小是32m, 如果你真的需要使用超過32m的記憶體可以修改php.ini配置檔案的如下配置:

memory_limit = 32m
如果你無法修改php配置檔案,如果你的php環境沒有禁用ini_set()函式,也可以動態的修改最大的記憶體占用大小:

<?php

ini_set("memory_limit", "128m");

既然我們能動態的調整最大的記憶體占用,那我們是否有辦法獲取目前的記憶體占用情況呢?答案是肯定的。

memory_get_usage(),這個函式的作用是獲取目前php指令碼所用的記憶體大小。

memory_get_peak_usage(),這個函式的作用返回當前指令碼到目前位置所占用的記憶體峰值,這樣就可能獲取到目前的指令碼的記憶體需求情況。

盡量不要使用CSS Expression的原因

在程式設計客棧csvwhlqyeiys expression中使用j ascript表示式。css屬性根據j ascript表示式的計算結果來設定。c expression在其它瀏覽器中不起作用,因此在跨瀏覽器的編碼中單獨針對ie設定時會比較有用。從ie5開始支援css expression。我們看...

finally中不要使用return的兩種情況

以下兩種情況要避免在finally中使用return 1.如果catch塊中捕獲了異常,並將該異常throw給上級呼叫者處理,但finally中return了,那麼catch塊中的throw就失效了,上級方法呼叫者是捕獲不到異常的 例 如下 上級呼叫者是捕獲不到異常的 public static v...

ecshop的詳細安裝步驟

ecshop要放在www目錄下,這樣訪問的話就可以直接 就出來安裝的介面了 填寫自己的資料庫賬號和密碼,然後把該選的都選好了,然後點選立即安裝 如果想訪問後台的話 網域名稱加上 admin 即可訪問 這裡還要說一下更改檔案許可權要怎麼改 拿乙個檔案試一下,點選屬性,然後安全 然後點選編輯後點選新增 ...