上手並過渡到PHP7(1)——基於Homestead的PHP7和XDdebug環境


PHP7 up and running

泊學實操視頻
泊學原文鏈接
PHP7, Xdebug and Homestead

在經歷了13個RC版本之后,PHP 7終於來了。在我們上手評估PHP 7的新特性之前,我們要先建立一個獨立的開發環境。

Homestead - A full-feature PHP 7 box

安裝Homestead vagrant box

Homestead是一個由Laravel官方維護的Vagrant "box"。它基於Ubuntu 14.04,把一個LNMP環境、PHP開發常用的軟件包和PHP模塊“打包”在了一起,是我們部署PHP開發環境最“爽”的方式之一。作為在PHP社區最受歡迎的Framework之一,Laravel當然不會錯過PHP 7版本的Homestead。接下來,我們就基於Homestead,構建一個單獨用於測試PHP 7的Vagrant box。

開始前,你需要在你的操作系統安裝兩個軟件:

Virtualbox: 我們的開發環境將會部署和運行在一個Virutalbox虛擬機里;
Vagrant: 用來管理和啟動Homestead的工具;
如果你對它們還並不熟悉也沒關系,先下載並安裝上它們就好了。安裝之后,我們需要把Homestead box下載到本地。打開系統的Terminal,運行下面的命令:

vagrant box add laravel/homestead-7 


之后選1,再之后,就是安靜的等待homestead下載完成了。完成之后,我們使用:

vagrant box list 

來查看安裝在本地的vagrant box。

如果可以看到紅框里的部分,就表示已經下載成功了。

安裝Homestead部署腳本

執行下面的命令,clone homestead部署項目到本地:

git clone -b php-7 https://github.com/laravel/homestead.git Homestead7 

之后,進入Homestead7目錄,執行初始化腳本:

cd Homestead7 bash init.sh 

完成后,在~/.homestead目錄下,就會有一個Homestead.yaml的文件。今后,我們所有的LNMP項目配置,都統一在這個文件中進行。

LNMP項目設置

在啟動homestead之前,我們要先進行一些設置。首先,我們新建一個目錄php7,用來存放我們編寫的PHP 7腳本。

mkdir php7 

接下來,我們打開~/.homestead/Homestead.yaml,把剛才新建的代碼目錄,“添加”到homestead,變成一個站點。

在Homestead.yaml里,我們需要修改上圖中紅框標記的兩個地方:

folders:把Host上的源代碼目錄同步到virtualbox虛擬機里面的目錄;
sites: map指定站點的servername;to指定HTTP root;
至於其他部分,我們暫時就不需要修改了,保存文件后,退出編輯器。

Vagrant up

一切都配置完了,我們在之前的新建的php7目錄添加一個測試腳本demo.php:

 <?php phpinfo(); 

之后,進入Homestead7目錄,執行vagrant up命令,啟動homestead-7 box!

成功啟動之后,我們之前添加的demo.php就會被自動同步到我們在folders中配置的目錄,並且homestead會自動添加我們在sites中定義站點的nginx配置文件。

接下來,我們在/etc/hosts中添加一條解析記錄:

192.168.10.10 php7.app

打開瀏覽器,訪問http://php7.app/demo.php,如果你可以看到標志性的php info頁面,恭喜你,homestead已經正常工作了。

Xdebug - Debug PHP code step by step

編譯安裝Xdebug

成功部署PHP 7后,接下來我們要解決代碼調試的問題,對於稍微復雜一些的項目,使用var_dump()打印變量調試非常不方便,並且不利於我們動態理解PHP代碼的執行過程。而這,就是Xdebug要解決的問題。

在經歷了很長一段時間后,Xdebug從2.4.0版本開始,支持調試PHP 7代碼,接下來,我們采用源碼編譯的方式進行安裝。

首先,我們在Homestead7目錄,執行vagrant ssh登錄到Homestead虛擬機;

其次,下載並解壓Xdebug源代碼:

wget http://xdebug.org/files/xdebug-2.4.0rc1.tgz tar xvzf xdebug-2.4.0rc1.tgz 

接下來,進入解壓縮的目錄,使用phpize7.0生成配置文件、configure、make、make install:

cd xdebug-2.4.0RC1
phpize7.0
configure --enable-xdebug make sudo make install 

成功編譯安裝后,Xdebug會顯示編譯完成的.so文件目錄,我們要記錄下這個目錄,讓當前的PHP環境支持Xdebug調試。

啟用Xdebug

首先,我們為Xdebug創建一個配置文件,xdebug.ini,這里,注意把zend_extension的目錄替換成自己的.so目錄:

zend_extension="/usr/lib/php/20151012/xdebug.so" xdebug.remote_enable = 1 xdebug.remote_connect_back = 1 xdebug.remote_port = 9000 xdebug.max_nesting_level = 500 

之后,我們把xdebug.ini復制到/etc/php/mods-available目錄。

接下來,在當前PHP 7 CLI和FPM的conf.d目錄創建對應的符號鏈接:

sudo ln -snf /etc/php/mods-available/xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini sudo ln -snf /etc/php/mods-available/xdebug.ini /etc/php/7.0/fpm/conf.d/20-xdebug.ini 

最后,我們重啟php7.0-fpm,讓新的配置生效:

service php7.0-fpm restart 

我們有很多方式來確認Xdebug已經正常工作了:

在Terminal執行php -m,在輸出結果最后的[Zend Modules]部分,可以看到有Xdebug;
執行php -i |grep xdebug,在輸出的結果中,可以看到有xdebug support => enabled;
訪問我們之前的http://php7.app/demo.php,在Zend Engine圖片的旁邊,可以找到Xdebug標志;

PHPStorm

設置好PHP 7和Xdebug后,我們需要一個IDE來配置和使用它們。這里,我們使用PHPStorm,大家可以免費下載官方提供的EAP版本。

安裝好之后,我們使用PHPStorm打開之前創建的php7目錄,我們需要為我們的項目配置一下服務器環境。點擊“Run / Edit configurations...”。在彈出的對話框里,點擊左上角的+,選擇PHP Web Application。

在右側界面中,設置好Name之后,點擊紅色箭頭位置的按鈕來設置遠程服務器:

這里的遠程服務器就是指Homestead啟動的Virtualbox,點擊左上角的+,之后,填入相應的信息(一定要設置好path mapping):

最后,基於我們填寫的Server Host,在Start Url填寫我們要訪問的文件。這里我們寫之前創建的demo.php,PHPStorm會自動為我們生成默認的訪問鏈接。

一切都設置好,點擊OK按鈕。接下來為了測試調試功能,我們修改一下之前的demo.php:

<?php $foo = 10; $bar = 20; $compare = $foo <=> $bar; echo $compare; 

之后,點擊$foo左側的區域,設置一個斷點。

點擊菜單"Run / Debug 'php7demo...'",

如果一切順利,PHPStorm會啟動Chrome,並且自動停在demo.php設置斷點的地方。

這樣,你就可以點擊紅色箭頭位置的按鈕,單步調試自己的PHP 7代碼了。

Package all of them into a container

雖然部署看一個可調式的PHP 7環境並不難,但是按照上面一步步走來總也要費不少功夫,在理解了具體我們都需要做哪些工作之后,我們給大家提供一個更簡單的部署PHP 7開發環境的辦法。

泊學給大家提供了一個LNMP的Docker image,和Homestead一樣,我們打包了一個最新的LNMP環境、一個可調試的PHP 7版本以及兼容Laravel常用的PHP modules。

*這僅僅是一個便於構建開發環境的方法,我們沒有采用Docker倡導的單容器單進程的方式,不要在生產環境使用這個container。針對Docker部署問題,我們會基於Laravel單獨提供一個Docker自動化部署的視頻系列。
-特別注意*

打開終端,執行下面的命令:

docker pull boxueio/php7-with-xdebug 

等Docker下載完,我們執行(把[your source dir]替換成你自己的PHP源代碼目錄):

docker run -d --name php7 -p 8088:80 -p 33060:3306 -v [your source dir]:/var/www/php7.app php7-with-xdebug 

之后,Docker會返回一個container ID,我們使用docker ps命令,就可以查看正在運行的容器了。接下來,只要在/etc/hosts中添加一個php7.app的解析記錄,我們就可以通過http://php7.app:8088,訪問PHP 7的開發環境了。

 

原文:

https://segmentfault.com/a/1190000004148696


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM