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