Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AbiruzzamanMolla/8bd3efc949fc954e98324c3b40e5d77c to your computer and use it in GitHub Desktop.
Save AbiruzzamanMolla/8bd3efc949fc954e98324c3b40e5d77c to your computer and use it in GitHub Desktop.
## For DDev Setup
To configure Visual Studio Code to use the PHP binary from your Docker DDEV setup, you need to point VS Code to the PHP binary inside your Docker container. Follow these steps:
---
### 1. **Determine the PHP Path in DDEV**
- Start your DDEV project:
```bash
ddev start
```
- Enter the web container:
```bash
ddev ssh
```
- Locate the PHP binary path:
```bash
which php
```
For most DDEV setups, the path will be `/usr/local/bin/php`.
- Exit the container:
```bash
exit
```
---
### 2. **Create a Script to Access Docker PHP**
To make the PHP binary accessible from your host, create a script that uses `docker exec` to run PHP inside the container.
- Create a script file, for example, `ddev-php` in a directory included in your PATH (e.g., `/usr/local/bin`):
```bash
sudo nano /usr/local/bin/ddev-php
```
- Add the following script:
```bash
#!/bin/bash
ddev exec php "$@"
```
- Save and close the file, then make it executable:
```bash
chmod +x /usr/local/bin/ddev-php
```
Now, you can use `ddev-php` on your host machine as a proxy to the PHP binary in your DDEV container.
---
### 3. **Configure VS Code PHP Path**
- Open your VS Code settings (either `settings.json` or via the GUI).
- Set the `php.executablePath` to point to the `ddev-php` script:
```json
"php.executablePath": "/usr/local/bin/ddev-php"
```
---
### 4. **Test the Setup**
- Restart VS Code.
- Open a PHP file and ensure that linting or debugging works as expected.
- You can test by running:
```bash
ddev php --version
```
This setup allows VS Code to use the PHP installed in your Docker DDEV container, while still allowing you to interact with PHP as if it were installed natively.
[enter image description here][1]
## or fresh docker container setup
If you're using a standalone Docker container with PHP, you can still configure Visual Studio Code to use the PHP executable inside the container. Here's how:
---
### 1. **Find the PHP Binary in the Docker Container**
- Start your Docker container that has PHP installed:
```bash
docker start <container_name>
```
Replace `<container_name>` with the name or ID of your PHP container.
- Check the PHP binary path by executing:
```bash
docker exec <container_name> which php
```
This typically returns `/usr/bin/php` or `/usr/local/bin/php`.
---
### 2. **Create a Script to Access Docker PHP**
Create a wrapper script on your host machine to use PHP from the container.
- Create a script file, for example, `docker-php`:
```bash
sudo nano /usr/local/bin/docker-php
```
- Add the following content:
```bash
#!/bin/bash
docker exec -i <container_name> php "$@"
```
Replace `<container_name>` with the actual name or ID of your container.
- Save and close the file, then make it executable:
```bash
chmod +x /usr/local/bin/docker-php
```
Now, `docker-php` acts as a proxy for the PHP executable inside your container.
---
### 3. **Set PHP Path in Visual Studio Code**
- Open VS Code settings (via GUI or `settings.json`).
- Set the `php.executablePath` to point to the `docker-php` script:
```json
"php.executablePath": "/usr/local/bin/docker-php"
```
---
### 4. **Test the Configuration**
- Restart VS Code.
- Open a PHP file to verify that linting and other PHP tools work.
---
### 5. **Advanced: Use Dynamic Container Detection (Optional)**
If the container name changes often, you can modify the script to detect the container dynamically:
```bash
#!/bin/bash
container_id=$(docker ps --filter "ancestor=<image_name>" --format "{{.ID}}" | head -n 1)
docker exec -i $container_id php "$@"
```
Replace `<image_name>` with the name of the PHP Docker image. This script will find the running container dynamically and execute PHP commands inside it.
---
This approach makes it easy to integrate Docker PHP into your local development workflow with minimal setup.
[1]: https://i.sstatic.net/9nSpltuK.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment