PHP7 學習筆記(三)關於PHP7如何安裝調試工具Xdebug擴展以及Zephir的問題

前言:php

一、本身摸索安裝git

二、快速安裝github

安裝這個擴展是因爲Zephir 編譯不能始終經過,無可奈何啊,使用Zephir寫擴展,老是出現如下錯誤:web

www@ubuntu1:~/phalcon-zephir/$ sudo zephir build Segmentation fault (core dumped)

去官方問問,因爲php cli 沒有安裝 Disable xdebug 擴展致使的結果thinkphp

開始安裝json

git clone git://github.com/xdebug/xdebug.git
 cd xdebug # 生成configure 配置文件/xdebug$ /opt/php7.0.22/bin/phpize # 查找 php-config 配置我文件 /xdebug$ sudo find / -name php-config /opt/php7.0.22/bin/php-config # 配置 ./configure --enable-xdebug --with-php-config=/opt/php7.0.22/bin/php-config # 編譯 make -j2  
# 安裝
sudo make install

編譯成功後的界面ubuntu

cli 添加配置文件,是如下紅色部分:vim

vim /etc/php/7.0/cli/php.ini 添加如下代碼:瀏覽器

zend_extension=/opt/php7.0.22/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so

web 頁面配置文件bash

sudo vim /opt/php7.0.22/etc/php.ini 配置文件添加

zend_extension=/opt/php7.0.22/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so

 重啓php-fpm 後的效果

 

》》》》》》》遇到的坑,如何解決

PHP Fatal error: Class 'jsonserializable' not found in Unknown on line 0

Phalcon 官方:https://github.com/phalcon/zephir/issues/1127

也就是說php cli 命令行的Phalcon擴展沒有安裝

你能夠去看這裏:https://stackoverflow.com/questions/36848664/php-fatal-error-class-jsonserializable-not-found-in-unknown-on-line-0

 我是如何作的:

cd /etc/php/7.0/mods-available sudo vim phalcon.ini 添加內容: extension=phalcon.so cd /etc/php/7.0/cli/conf.d/
sudo ln -s /etc/php/7.0/mods-available/phalcon.ini 50-phalcon.ini

2、快速安裝


 

一、xdebug 網址 :https://xdebug.org/

二、下載配置安裝和本身服務對應的xdebug版本

三、打印本身服務器配置的環境信息(phpinfo()),圖小所示

四、鼠標右鍵查看(phpinfo())網頁的源代碼,複製全部網頁源代碼粘貼到(https://xdebug.org/wizard.php)表單輸入框中,直接運行便可

 五、https://xdebug.org/wizard.php 頁面將會出現與之對應的xdebug 配置信息

(1)Linux 配置信息

Tailored Installation Instructions

Summary

Xdebug installed: 2.6.0alpha1
Server API: FPM/FastCGI
Windows: no
Zend Server: no
PHP Version: 7.1.9
Zend API nr: 320160303
PHP API nr: 20160303
Debug Build: no
Thread Safe Build: no
Configuration File Path: /usr/local/php-7.1.8/etc
Configuration File: /usr/local/php-7.1.8/etc/php.ini
Extensions directory: /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303
Instructions

Download xdebug-2.6.0.tgz
Unpack the downloaded file with tar -xvzf xdebug-2.6.0.tgz
Run: cd xdebug-2.6.0
Run: phpize (See the FAQ if you don't have phpize.

As part of its output it should show:

Configuring for:
...
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.

Run: ./configure
Run: make
Run: cp modules/xdebug.so /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303
Update /usr/local/php-7.1.8/etc/php.ini and change the line
zend_extension = /usr/local/php-7.1.8/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Restart the webserver
If you like Xdebug, and thinks it saves you time and money, please have a look at the donation page.

(2)Windows 環境配置信息(php-study集成環境)

(3)修改配置文件

[xdebug]
zend_extension = E:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug-2.6.0-7.1-vc14-nts.dll
 
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"

六、按照以上說明下載(或者編譯相應的擴展到系統環境中去,記住要修改配置文件後,記得重啓服務,驗證是否安裝成功,出現如下界面表示安裝成功

七、 phpstrom 如何配置

(1)打開phpstrom IDE 軟件,點擊下拉小箭頭

(2)添加應用程序 PHP Web Application

(3)配置server 服務器

(4)配置一個本地服務器爲了調試

八、實戰

(1)下面咱們經過PHP異常的代碼進行測試xDebug

當異常被拋出時,其後的代碼不會繼續執行,PHP 會嘗試查找匹配的 "catch" 代碼塊。

若是異常沒有被捕獲,並且又沒用使用 set_exception_handler() 做相應的處理的話,那麼將發生一個嚴重的錯誤(致命錯誤),而且輸出 "Uncaught Exception" (未捕獲異常)的錯誤消息。

讓咱們嘗試拋出一個異常,同時不去捕獲它:

<?php
//create function with an exception
function checkNum($number)
{
    $res = $number;
    if ($res > 10) {
        throw new Exception("Value must be 1 or below");
    }
    return true;
}

//trigger exception
checkNum(2);

(2)演示效果

【1】配置phpStrom的Xdebug配置

【2】使用一個PHP異常的代碼做爲調試

【3】調製以前一開啓監聽Xdebug

 

【4】在須要調試的行上打上斷點(點擊一下行號後面的空白處便可,再點一次取消斷點),如下咱們打了兩個斷點

【5】開始調試,記得必定要打斷點

【6】這時候會自動打開瀏覽器你所要調試的URL地址,同時攜帶xDebug的ID(http://localhost/Xdebug-Test/index.php?XDEBUG_SESSION_START=10409)

【7】這時候phpStrom IDE 會自動轉向調試的代碼片斷(若是你是刷新的,則會在任務欄提示你,一閃一閃的),也就打斷點的地方

 

注意:以上的斷點和剛開始打的斷點已經不一樣的,中間是一個(√)對號,表示調試已經開始了

【8】按住F8進行調試,Variables 部分中的數據爲Xdebug輸出的數據 $number = 2

F8 繼續調試,能夠看出當前的值$res = 2,能夠看出傳入的參數,還有那個當前變量的值是多少一目瞭然

重複以上步驟,給 checkNum() 函數傳遞不一樣的參數,經過Xdebug查看程序執行的詳細步驟,親自動手試試吧!

【9】根據斷點配置,或在打開 Debug URL 的過程當中,或在 POST 以後,若是 PhpStorm 監聽到了 Debug 鏈接,就會當即切換到編輯器界面,並跳轉到設置的斷點處,瀏覽器端會等待 PhpStorm 的操做。 

【10】以上爲本地最簡單的調試就此結束

4、使用域名

一、測試環境:

(1)運行環境:phpStudy 集成環境

(2)框架:使用TP5 最新框架測試

二、下載框架

TP5.1 只能使用composer安裝,安裝詳細地址:https://www.kancloud.cn/manual/thinkphp5_1/353948

安裝命令:composer create-project topthink/think tp5.1

  

三、瀏覽器查看是否安裝成功

  

四、配置域名

   

 五、phpStrom 配置

 修改配置文件:php.ini 

[XDebug]
xdebug.profiler_output_dir="E:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.trace_output_dir="E:\phpStudy\PHPTutorial\tmp\xdebug"
zend_extension = E:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug-2.6.0-7.1-vc14-nts.dll
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=tp5.test
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_autostart=1 

若是 xdebug.remote_host = 127.0.0.1 則驗證未經過,因此必須設置爲域名(上面配置的tp5.test)

驗證經過

開始調試。提示錯誤信息

 解決辦法,項目目錄作一個映射既能夠

 補充:若是是本地調試的話,要作一個映射的

 

繼續調試,則和第一次配置localhost同樣調試就能夠了

 

 5、使用域名和PostMan 調試接口

 自動配置命名空間

配置完成以後

咱們再次新建項目的時候,命名空間已經自動加載上了(固然了,若是該文件夾下面已經建立過一次文件了,則第二次建立的時候也會自動提示命名空間的)

相關文章
相關標籤/搜索