Setting up Tinkerwell on Windows 10 through WSL2

How to set up Tinkerwell on Windows and connect to WSL2 based Laravel projects.

I recently worked on a project with lots of interconnected relationships between various models and the best solution I could come up with in my attempt to debug and validate the data, was by either using Laravel Tinker and running the Eloquent queries there, or to dd() or Log::info out the result of a specific query.

Needless to say, I spent way too long trying to figure out, how to best go about extracting and manipulating the data I needed.

As a result, I decided to finally give Tinkerwell a try.

I downloaded the Windows version, installed it, and.... error upon error upon error upon...

Despite being an adept Google’er? it took me 4 hours to finally find a way through all the problems and get it connected to WSL2.

Seeing as there wasn’t any great guide on this, I thought I’d contribute with my setup path and hopefully, it’ll help you too.

Who’s this solution for?

As far as I could tell during my search, this seems to only be a problem for Windows 10 users, trying to connect to projects located in WSL2.

I personally use a Windows 10 machine with Docker installed (Windows side). I’m running a Ubuntu 20.04 VM through WSL2, where I have all my projects located in the /home/user/* path

I didn’t have PHP installed Windows side, only in WSL2.

Setup guide - Step by step.

  • I had to bind my WSL2 network path to a Windows Drive in order to connect. I ran this command in Powershell. Obviously, change the Ubuntu-20.04 to match your WSL2 image.
net use * \\wsl$\Ubuntu-20.04

#Result: Drive Z: is now connected to \\wsl$\Ubuntu-20.04.

  • Open Tinkerwell → Navigate to Settings → Connect the app to your PHP binaries path in Windows.

Meaning, downloading/Installing PHP on Windows, unless you already have it, and inserting the path to your php.exe or php-win.exe file.

I didn’t have PHP installed on Windows so I downloaded Xampp and downloaded PHP through that.

  • If Tinkerwell doesn’t automatically respond to you attaching your PHP binaries with a “Detected version: ....”, then restart the application. I was stuck here for quite a while, wondering why it wouldn’t recognize my PHP binaries as it was meant to do. A quick restart of Tinkerwell was all that was needed.
  • To connect to a WSL2 based project, click on: “Set Working Directory” (CTRL + O). Now, select your Ubuntu drive (In my case Z: ) and navigate to your desired project root folder → Select Folder.
  • You should now be connected to your WSL2 based project! Check for your project name in the current Tab headline. Give it a go with a simple Eloquent Query and run your code!

Hint: I recommend running your code manually, as auto evaluating the code has a larger delay. Also, no point in auto evaluating something, that you’re still typing out.

Also: Forget about SSH access. That was my first attempt at connecting and I just couldn’t get it to work.

What if it still doesn’t work?

Throw away your Windows machine and buy a Macbook! God, I regret getting a Windows machine instead of a MacOS based :-( Jokes aside, I’ve linked a couple of the resources I used to find a solution.

Jake Harris has a potential solution requiring one to install X server. I couldn’t get that to work, but there’s a good chance you’re smarter than me, so who knows if that’s the missing key?