zoukankan      html  css  js  c++  java
  • PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

    前言:

    1、自己摸索安装

    2、快速安装

    安装这个扩展是由于Zephir 编译不能始终通过,迫不得已啊,使用Zephir写扩展,总是出现以下错误:

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

    去官方问问,由于php cli 没有安装 Disable xdebug 扩展导致的结果

    开始安装

    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

    编译成功后的界面

    cli 添加配置文件,是以下红色部分:

    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 页面配置文件

    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

    二、快速安装


     

    1、xdebug 网址 :https://xdebug.org/

    2、下载配置安装和自己服务对应的xdebug版本

    3、打印自己服务器配置的环境信息(phpinfo()),图小所示

    4、鼠标右键查看(phpinfo())网页的源代码,复制所有网页源代码粘贴到(https://xdebug.org/wizard.php)表单输入框中,直接运行即可

     5、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:phpStudyPHPTutorialphpphp-7.1.13-ntsextphp_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"

    6、按照以上说明下载(或者编译相应的扩展到系统环境中去,记住要修改配置文件后,记得重启服务,验证是否安装成功,出现以下界面表示安装成功

    7、 phpstrom 如何配置

    (1)打开phpstrom IDE 软件,点击下拉小箭头

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

    (3)配置server 服务器

    (4)配置一个本地服务器为了调试

    8、实战

    (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】以上为本地最简单的调试就此结束

    四、使用域名

    1、测试环境:

    (1)运行环境:phpStudy 集成环境

    (2)框架:使用TP5 最新框架测试

    2、下载框架

    TP5.1 只能使用composer安装,安装详细地址:https://www.kancloud.cn/manual/thinkphp5_1/353948

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

      

    3、浏览器查看是否安装成功

      

    4、配置域名

       

     5、phpStrom 配置

     修改配置文件:php.ini 

    [XDebug]
    xdebug.profiler_output_dir="E:phpStudyPHPTutorial	mpxdebug"
    xdebug.trace_output_dir="E:phpStudyPHPTutorial	mpxdebug"
    zend_extension = E:phpStudyPHPTutorialphpphp-7.1.13-ntsextphp_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一样调试就可以了

     

     五、使用域名和PostMan 调试接口

     自动配置命名空间

    配置完成之后

    我们再次新建项目的时候,命名空间已经自动加载上了(当然了,如果该文件夹下面已经创建过一次文件了,则第二次创建的时候也会自动提示命名空间的)

     

     

     

  • 相关阅读:
    取汉字字串的首字母
    回调函数
    [转].NET对象与COM对象
    [转]TCP与UDP的特点与区别
    【转】一张图分出你是用左脑还是右脑!
    并发基础(Runnable、Thread、Executor)
    Java序列化总结
    Hadoop安装配置手册
    MySQL配置信息解读(my.cnf)
    mysql主从备份、主从切换
  • 原文地址:https://www.cnblogs.com/tinywan/p/7447958.html
Copyright © 2011-2022 走看看