Written by James McDonald

May 24, 2023

There are three configurations this post covers

Local Development

Use the default if working locally

If you are using CakePHP 4 and developing on the local file system (straight from Windows) use this:

Debugger::setEditor('vscode');

If your project is in C:\Users\ja.TGNT\cake_test you get a URL as follows on a Windows 11 System

vscode://file/C:\Users\ja.TGNT\cake_test\vendor\cakephp\cakephp\src\Controller\Controller.php:547

For WSL

To get to a file hosted in WSL you have to make sure the link targets the full path to the file in the WSL environment.

In this case I have the source code being served from a folder in WSL via a Docker container.

So I have to remove the CakePHP 4 ROOT (/var/www/wms) and prepend the WSL path to that mounted folder.

Debugger::addEditor('wsl', function ($file, $line) {
    $file = str_replace(ROOT, '', $file);

    $prefix = '/home/ja/dev/wms';

    return "vscode://vscode-remote/wsl+Ubuntu-22.04{$prefix}{$file}:{$line}";
});

Debugger::setEditor('wsl');

An example of a URL for WSL

vscode://vscode-remote/wsl+Ubuntu-22.04/home/ja/dev/wms/vendor/cakephp/cakephp/src/Database/Expression/QueryExpression.php:647

Note the /wsl+Ubuntu-22.04 which is the Windows Subsystem for Linux Distribution being used

Windows 11 Host and Docker using WSL2 Engine

This will allow you to attach to a running docker Development container

Debugger::addEditor('docker', function ($file, $line) {
    $container = [
        'containerName' => 'wms-php-1'
    ];

    $json = json_encode($container);

    $hex = bin2hex($json);

    return "vscode://vscode-remote/attached-container+{$hex}{$file}:{$line}";
});

Debugger::setEditor('docker');

An example of a URL for attaching to a running Docker container

vscode://vscode-remote/attached-container+7b22636f6e7461696e65724e616d65223a22776d732d7068702d31227d/var/www/wms/vendor/cakephp/cakephp/src/Database/Expression/QueryExpression.php:647

References

https://github.com/microsoft/vscode-remote-release/issues/6832

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…

Robocopy exclude Directories

Just trying to copy everything except a couple of directories from a drive to my NAS This is the secret incantation of...