- PHP面試一戰(zhàn)到底
- 閆小坤
- 2266字
- 2022-07-28 19:21:28
1.1 環(huán)境搭建
PHP的運(yùn)行環(huán)境可以分為CLI模式和CGI模式,前者為命令行模式,可以本機(jī)運(yùn)行;后者為網(wǎng)關(guān)模式,通常使用Nginx或Apache作為Web服務(wù)器,而PHP作為解釋器來接收輸入數(shù)據(jù)并將處理結(jié)果返回給Web服務(wù)器。
1.1.1 下載與安裝
如果讀者使用Windows平臺(tái),可以在網(wǎng)址https://windows.php.net/download中下載。
推薦將PHP安裝在C:\php目錄下。
如果讀者使用Mac系統(tǒng),則可以使用Homebrew來安裝:
sudo brew update brew install php70
如果讀者使用Ubuntu系統(tǒng),則可以使用如下命令來安裝:
sudo apt-get update sudo apt-get install php7.0-fpm php7.0-cli
本書默認(rèn)PHP的安裝位置如表1-1所示。
表1-1 PHP默認(rèn)安裝位置

以Ubuntu為例,最后安裝完成之后,可以用php-v來查看版本號(hào):

注意,本書默認(rèn)的PHP版本為7,有特殊說明的除外。
1.1.2 CLI模式
在CLI模式下運(yùn)行PHP代碼有多種方式,本書使用如下三種:
1.運(yùn)行文件
php source.php
2.直接運(yùn)行php代碼
php -r 'phpinfo()';
3.交互模式
localhost:etc didi$ php -a Interactive shell php > echo 'hello world'; hello world
1.1.3 CGI模式
CGI模式下,Web服務(wù)器接收客戶端發(fā)出的請(qǐng)求,將地址欄的URL“路由”到一個(gè)PHP腳本,而PHP作為解釋器來執(zhí)行PHP腳本。這里介紹4種Web環(huán)境的配置。
1.內(nèi)置Web服務(wù)器
PHP 5.4.0以上的版本提供了一個(gè)內(nèi)置的Web服務(wù)器,供本地開發(fā)使用,默認(rèn)的Web根目錄是當(dāng)前目錄,也可以使用-t來指定其他的目錄作為Web根目錄。
$ php -S localhost:8000 -t ~/www PHP 7.1.19 Development Server started at Wed Jan 23 15:11:37 2019 Listening on http://localhost:8000 Document root is /Users/david/www Press Ctrl-C to quit.
2.集成開發(fā)環(huán)境
由于LNMP環(huán)境的配置對(duì)初學(xué)者來說比較復(fù)雜和煩瑣,因此一些企業(yè)或組織推出集成開發(fā)環(huán)境的一鍵安裝包,不需要復(fù)雜配置,安裝即可使用,這里推薦使用XMAPP環(huán)境。
XMAPP是一款集成PHP、MariaDB、Apache等軟件的開發(fā)環(huán)境,目前提供了Windows、Mac、Linux的全平臺(tái)支持的下載包。下載地址為:https://www.apachefriends.org/index.html。
3.LNMP環(huán)境
LNMP是Linux、Nginx、MySQL、PHP的縮寫,是常用的PHP生產(chǎn)環(huán)境。本節(jié)簡(jiǎn)單描述一下在Ubuntu下安裝LNMP環(huán)境的步驟。完整命令可以在隨書代碼的gists/ch01/install_lnmp.md文件中找到。
(1)準(zhǔn)備必要的軟件包:
sudo apt-get install software-properties-common sudo apt-get install -y language-pack-en-base sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
(2)安裝PHP 7。此處安裝了PHP的很多擴(kuò)展,讀者可以根據(jù)自己的需要酌情增減:

(3)安裝Nginx:
sudo apt-get install nginx
Nginx和PHP通信的方式有兩種:TCP/IP和UNIX Domain Socket。一般推薦使用TCP/IP方式。
編輯/etc/php/7.0/fpm/pool.d/www.conf文件,使PHP-FPM監(jiān)聽9000端口:
listen 127.0.0.1:9000
然后修改sites-enabled目錄里的文件,將fastcgi_pass修改如下:

(4)安裝MySQL Server:
運(yùn)行以下命令,根據(jù)提示完成MySQL Server的安裝:
sudo apt-get install mysql-server sudo mysql_secure_installation
(5)重新啟動(dòng)服務(wù):
sudo service php7.0-fpm restart sudo service nginx restart
如果Nginx啟動(dòng)失敗,可以將IP V6配置注釋掉:
(源碼文件:/etc/nginx/sites-enabled/default)
#listen [::]:80 default_server;
訪問http://localhost或相應(yīng)IP即可看到Nginx的歡迎頁(yè)面,如圖1-1所示。

圖1-1 Nginx的歡迎頁(yè)面
這樣即可完成安裝。
4.Docker環(huán)境
習(xí)慣使用Docker的讀者,也可以使用Docker搭建開發(fā)環(huán)境。LNMP環(huán)境所需要的軟件鏡像都可以在Docker Hub(https://hub.docker.com)里找到。表1-2列舉了軟件鏡像的網(wǎng)址和命令。
表1-2 軟件鏡像網(wǎng)址及命令

這里推薦筆者開發(fā)的一個(gè)使用相關(guān)軟件的Alpine版本的Docker環(huán)境。讀者可以訪問https://github.com/spetacular/php-alpine獲取相關(guān)下載文件。
Alpine(見圖1-2)是一個(gè)面向安全的輕型Linux發(fā)行版,官網(wǎng)地址為https://alpinelinux.org。不同于通常的Linux發(fā)行版,Alpine采用了musl libc(一種C標(biāo)準(zhǔn)函數(shù)庫(kù))和Busybox(一個(gè)遵循GPL協(xié)議、以自由軟件形式發(fā)行的應(yīng)用程序)來減小系統(tǒng)的體積和運(yùn)行時(shí)的資源消耗,但功能比Busybox更為完善。Alpine的Docker鏡像容量很小,只有5 MB左右,而Ubuntu鏡像則接近200 MB。因此使用Alpine來搭建LNMP環(huán)境非常方便。

圖1-2 Alpine操作系統(tǒng)的Logo
Alpine PHP環(huán)境特性如下:
● 目前集成PHP、Nginx、Redis、MySQL。
● Alpine包比Ubuntu、Centos包體積小。
● 配置任意版本,包括Nginx、MySQL、Redis、PHP。
● 自由切換htdocs目錄。
Alpine PHP環(huán)境的安裝運(yùn)行,需要在本機(jī)安裝Docker和docker-compose,其下載地址為:https://docs.docker.com/engine/installation/。
安裝完畢后,下載文件包,下載地址為https://github.com/spetacular/php-alpine/archive/master.zip。
解壓后進(jìn)入目錄執(zhí)行build。如果下次啟動(dòng)時(shí)沒更改Dockerfile,就不需要再次build。只更改docker-compose.yml不需要重新build。
docker-compose build
執(zhí)行如下命令即可啟動(dòng):
docker-compose up
這時(shí)可以訪問http://localhost:8080來訪問環(huán)境。
docker-compose.yml字段說明如表1-3所示。
表1-3 docker-compose.yml字段說明

另外使用時(shí)注意以下事項(xiàng):
由于代碼跑在Docker里,所以localhost和127.0.0.1不再可用。如需要連接Redis和MySQL,應(yīng)使用如下地址:
redis-server mysql-server
1.1.4 開發(fā)工具
“工欲善其事,必先利其器”。選擇合適的文本編輯器,能夠起到事半功倍的效果。本節(jié)我們介紹幾種常見的文本編輯器及其配置方法。
1.Visual Studio Code
Visual Studio Code是微軟公司開發(fā)的一款開源的文本編輯器,它包含了編輯、構(gòu)建、調(diào)試的全周期所需要的功能,支持大部分主流的開發(fā)語(yǔ)言。它提供了豐富的插件庫(kù),讀者可以根據(jù)需要加以安裝和應(yīng)用。Visual Studio Code提供了Windows、Linux、Mac系統(tǒng)下的版本,讀者可以從官網(wǎng)地址直接下載和安裝(https://code.visualstudio.com/)。
安裝的方式分為全局安裝和工作區(qū)安裝。前者對(duì)所有的項(xiàng)目都適用,后者僅對(duì)當(dāng)前工作區(qū)生效。
2.全局安裝
打開首選項(xiàng)→設(shè)置,單擊右上角的“{ }”符號(hào),打開用戶設(shè)置頁(yè)面,如圖1-3所示。

圖1-3 用戶設(shè)置頁(yè)面
如果用戶設(shè)置為空,則直接復(fù)制如下代碼即可:
(源碼文件:gists/ch01/vscode_php_launch.json)

如果已有用戶設(shè)置,則只需將launch字段補(bǔ)充上去即可,例如:
(源碼文件:gists/ch01/vscode_add_php_launch.json)

注意將path/to/php按照表1-1進(jìn)行替換。
3.工作區(qū)安裝
首先安裝php debug插件。在Visual Studio Code左側(cè)邊欄切換到“擴(kuò)展(Extensions)”頁(yè)面,輸入“php debug”,即可找到該插件,如圖1-4所示。
切換到調(diào)試面板,在調(diào)試工具欄的下拉菜單里選擇“添加配置”,如圖1-5所示。

圖1-4 輸入“php debug”

圖1-5 添加配置
文件內(nèi)容如下:
(源碼文件:gists/ch01/vscode_php_launch.json)

4.運(yùn)行調(diào)試
配置完成后,可以在調(diào)試面板里運(yùn)行。如圖1-6所示,首先選擇“Run using local PHP Interpreter”的運(yùn)行配置,然后單擊綠色的三角即可運(yùn)行當(dāng)前打開的文件??梢钥吹?,在右下角的控制臺(tái)上輸出了程序執(zhí)行的結(jié)果。

圖1-6 程序執(zhí)行結(jié)果
5.Sublime
Sublime是一款很受開發(fā)者歡迎的文本編輯器,它提供了豐富的配置選項(xiàng)和插件,支持大部分主流的開發(fā)語(yǔ)言。可以從官網(wǎng)地址(https://www.sublimetext.com/)下載Sublime。
在頂部菜單依次選擇Tools → Build System→New Build System,這時(shí)會(huì)打開構(gòu)建配置文件,如圖1-7所示。

圖1-7 打開構(gòu)建配置文件
在打開的文件里,將內(nèi)容替換為如下所示:
(源碼文件:gists/ch01/sublime_php_launch.json)

其中cmd的第一個(gè)參數(shù)為PHP解釋器的路徑,例如Windows平臺(tái)為C:\\php\\php.exe,Mac平臺(tái)為/usr/bin/php。
編輯完成后,將配置保存為php.sublime-build的文件,Windows平臺(tái)使用Ctrl+B組合鍵,Mac平臺(tái)使用COMMAND+B組合鍵來運(yùn)行代碼。
- Java系統(tǒng)分析與架構(gòu)設(shè)計(jì)
- Beginning C++ Game Programming
- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例:基于STC8051+Proteus仿真與實(shí)戰(zhàn)
- Clojure for Domain:specific Languages
- Data Analysis with IBM SPSS Statistics
- 利用Python進(jìn)行數(shù)據(jù)分析(原書第3版)
- Oracle從入門到精通(第5版)
- Internet of Things with ESP8266
- Oracle GoldenGate 12c Implementer's Guide
- Mastering Elasticsearch(Second Edition)
- QlikView Unlocked
- Android Sensor Programming By Example
- Flink技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理
- Android移動(dòng)應(yīng)用項(xiàng)目化教程
- Machine Learning for OpenCV