萌新初入PHP,慘遭多版本暴打
????最近,不知道公司抽了什么風(fēng),接了一個(gè)PHP項(xiàng)目,比較離譜的是,這個(gè)項(xiàng)目別人做了一半,接口文檔沒(méi)有,設(shè)計(jì)文檔沒(méi)有,更離譜的是讓沒(méi)有PHP基礎(chǔ)的我半路接手,這種感覺(jué)真的是泰庫(kù)拉?。?!
????在我看過(guò)一些基礎(chǔ)的PHP知識(shí),準(zhǔn)備大展身手的時(shí)候,發(fā)現(xiàn)這個(gè)項(xiàng)目真的有毒啊。前端用的PHP8.0,后端用的PHP7.4,由于條件限制,只能在一臺(tái)電腦上運(yùn)行前端和后端,運(yùn)行起來(lái)以后發(fā)現(xiàn)這兩個(gè)版本互不兼容。
????當(dāng)我以為裝兩個(gè)版本的PHP,就能解決問(wèn)題的時(shí)候,我發(fā)現(xiàn)我還是太年輕了,PHP的入口文件里有這么一段代碼#!usr/bin/env php,這段代碼的意思是需要從環(huán)境變量里找到相關(guān)的配置,才能正常的運(yùn)行PHP項(xiàng)目。雖然我在環(huán)境變量里都配置了,但是其中有一個(gè)必定運(yùn)行不起來(lái)。我也查了這段代碼的相關(guān)解釋,這段代碼,中間可以添加路徑,我嘗試后,發(fā)現(xiàn)還是無(wú)法解決。不知道有沒(méi)有大佬可以解決這個(gè)問(wèn)題。
????最后,經(jīng)過(guò)不斷的查找和嘗試,使用了下面的方式,這樣就可以保證多個(gè)版本的php都可以正常的運(yùn)行。我們需要?jiǎng)?chuàng)建一個(gè).bat的文件,里面輸入以下內(nèi)容
@echo off
set dir=D:\tool\PHP8
rem 去除變量中所有的引號(hào)
set PATH=%PATH:"=%
set PATH=%dir%;%PATH%
set PARAM=%~1
::echo %PARAM%
IF NOT DEFINED PARAM (
php -v
GOTO end
)
php %~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9
:end
這樣就達(dá)到了多版本執(zhí)行PHP的目標(biāo)
為了方便可以在環(huán)境變量里添加配置,就像下面一樣

%php8% think run
????