剛才在遷移一個客戶企業(yè)網站的時候發(fā)現(xiàn)有報錯提示"preg_replace()"函數(shù)錯誤,后面一長長的字符串我就沒有記錄下來總之就是這個報錯。我看這個企業(yè)網站客戶是使用的很早的ECSHOP CMS程序做的,一般我們都知道的企業(yè)網站只要保持正常的可以能打開,基本不需要動。
但是目前技術也在增進,服務器配置的軟件也在提高。比如我們目前是使用的PHP7.4,至少也要使用PHP7.3,但是我估計是函數(shù)在PHP版本兼容問題。后來我查詢資料發(fā)現(xiàn),這個"preg_replace"只有在PHP5.6及以下才兼容的。
這里我想到三個解決方案:
第一、更換程序
我個人建議是讓業(yè)務去找客戶談一談,是否這么多年網站也不適應時代需求,是否可以換一個自適應的,以及當前美觀度習慣的。如果這樣的話,我們可以給他重新做一個網站,兼容PHP最新版本。
第二、修改程序
這里我們也可以看到,ECSHOP看到類似問題還是很多的。
includes/cls_template.php
在這個文件中找到:
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
然后替換成:
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
應該是可以解決的,這里我找到解決辦法是可以用的。
第三、搭建適配環(huán)境
我們單獨用一臺服務器搭建PHP較低版本的,然后給客戶單獨存放。這樣就顯得浪費服務器資源。
這個是目前可以解決的辦法,等業(yè)務問問客戶是否更換網站,我們建議他更新適應當前版本PHP最新版本比較好,效率也高。