目录

Visual Studio Code 是一款出色的 PHP 开发编辑器。我们可以使用语法高亮和括号匹配、自动提示和开箱即用的代码段等功能。

php扩展

VS Code Marketplace上有许多可用的 PHP 语言扩展。我们可以在 VS Code 中的“扩展”视图 ( Ctrl+Shift+X ) 中搜索 PHP 扩展,然后输入php:

sftp支持远程同步

  • 安装sftp扩展

    在扩展中输入sftp,找到作者是Natizyskunk的SFTP(继承liximomo)

    SFTP - Visual Studio Marketplace

  • 配置与使用

    Ctrl+Shift+P on Windows/Linux or Cmd+Shift+P on Mac open command palette, run SFTP: config command.

    会在.vscode目录下生成sftp的配置文件,可以写入:

    {
        "name": "开发测试host",
        "host": "192.168.22.128",
        "protocol": "sftp",
        "port": 22,
        "secure": true,
        "username": "username", //远程用户
        "remotePath": "/public_html/project", //远程项目代码绝对路径
        "password": "password",  //远程密码
        "uploadOnSave": true    //保存时同步上传
    }
    
    

    注意:注释可能会导致报错,可以去除注释

    重启下vscode,右键文件或目录就会出现upload的操作了。

  • 扩展存在问题导致上传失败

    第一次同步上传时可能会报错:Error: No such file (sftp liximomo extension)

    因为存在扩展存在问题,解决:

    • Shutdown / Quit VS Code.

    • Locate the following file:

      Mac OS X: ~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.js

      Windows: C:\Users\account_name.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js

    • Make a backup copy of the file.

    • Modify line 388, which should be:

      if ( code === STATUS_CODE . OK ) {

      changing it to:

      if (code === STATUS_CODE.OK || code === STATUS_CODE.NO_SUCH_FILE) {

    • Save the file.

    • Relaunch VS Code; test by uploading or downloading from your sftp server. The error should not be present.

    来源:visual studio code - Error: No such file (sftp liximomo extension) - Stack Overflow

  • 官方扩展

    官方扩展:liximomo/vscode-sftp: Super fast sftp/ftp extension for VS Code - config-in-user-setting

    更多配置说明:Common Config · liximomo/vscode-sftp Wiki

xdebug支持同步本地调试

php服务安装xdebug

  • php服安装xdebug扩展

    比如ununtu下:

    sudo apt-get install php-xdebug
    

    或者通过pecl安装对应版本PECL :: Package :: xdebug

  • php服务配置xdebug

    找到php.ini,或是比如/etc/php/7.1/mods-available/xdebug.ini

    zend_extension=xdebug.so
    ;xdebug.auto_trace=On
    ;xdebug.collect_params=On
    ;xdebug.collect_return=On
    ;xdebug.trace_output_dir="/tmp/xdebug/"
    xdebug.profiler_enable=On
    xdebug.profiler_output_dir="/tmp/xdebug/"
      
    xdebug.idekey=vscode-xdebug
    xdebug.remote_enable = On
    ;remote_host是vscode所在机器host
    xdebug.remote_host=192.168.0.107
    xdebug.remote_port=9000
    xdebug.remote_handler=dbgp
    xdebug.remote_connect_back=1
    ;xdebug.remote_log=/home/work/odp/log/xdebug.log
    xdebug.remote_timeout=3000
    xdebug.remote_autostart=1
    
    

    修改保存后,重启php相关服务,php-fpm

vscode安装配置xdebug

  • vscode安装xdebug扩展

    扩展输入php debug,安装扩展PHP Debug - Visual Studio Marketplace

  • vscode配置xdebug

    点击vsCode的debug按钮,或者ctrl+shift+d,开启调试窗口。如下:

    (图片来源segmentfault)

    会打开./vscode/launch.json中,配置需要监听的xdebug的端口9000。

    要使 VS Code 将服务器上的文件映射到本地计算机上的正确文件,路径映射在 launch.json 中设置。比如:

    // server -> local “pathMappings”: { “/var/www/html”: “E:\www”, “/app”: “E:\app” }

  • 支持浏览器、postman请求调试

    因为只要访问了远程php服务请求,xdebug就会收集php运行时数据,并转发给remote_host的remote_port端口,比如我们点了listen for xdebug的话,vscode监听着9000端口,vscode就会进入调试

  • 关于CLI

    另注意,设置任何 CLI 调试选项都不适用于远程主机调试,因为脚本始终在本地启动。如果要在远程主机上调试 CLI 脚本,则需要从命令行手动启动它。

如何使用debug

打断点、接受xdebug、继续执行、跳过、下一步等,参考官方文档:

(图片来源segmentfault)

debug使用参考:Debugging in Visual Studio Code

更多

推荐一些VSCode的好用插件-VSCode-PHP中文网

参考

PHP Programming with Visual Studio Code

Debugging in Visual Studio Code

PHP Debug - Visual Studio Marketplace

[PHP Debug] Visual Studio Code 调试插件 | Laravel China 社区

GitHub - liximomo/vscode-sftp: Super fast sftp/ftp extension for VS Code - config-in-user-setting

Common Config · liximomo/vscode-sftp Wiki · GitHub

visual studio code - Error: No such file (sftp liximomo extension) - Stack Overflow