PHP in Gitpod
Gitpod supports PHP right out of the box, but more advanced features such as debugging can be configured, so here is how to do it!
Example Repositories
Repository | Description | Try it |
---|---|---|
symfony-demo | A PHP/Symfony reference application following best practices | |
magento2gitpod | Magento 2 optimized setup for Gitpod: Nginx, MySQL, PHP 7.2, PHP-FPM and more | |
koel | A personal music streaming server that works | |
drupal | Drupal 9 with MySQL, suitable for site building and contrib module development |
Debugging PHP in Gitpod
The PHP Debug extension allows debugging PHP applications from within Gitpod.
To get this extension for your project, you must do two things:
First, you must create a .gitpod.Dockerfile for your repository:
FROM gitpod/workspace-full
RUN sudo apt-get update -q && sudo apt-get install -y php-dev
RUN wget http://xdebug.org/files/xdebug-2.9.1.tgz && tar -xvzf xdebug-2.9.1.tgz && cd xdebug-2.9.1 && phpize && ./configure && make && sudo mkdir -p /usr/lib/php/20190902 && sudo cp modules/xdebug.so /usr/lib/php/20190902 && sudo bash -c "echo -e '\nzend_extension = /usr/lib/php/20190902/xdebug.so\n[XDebug]\nxdebug.remote_enable = 1\nxdebug.remote_autostart = 1\n' >> /etc/php/7.4/cli/php.ini"
Second, reference the above Dockerfile in a .gitpod.yml file, and then also install the extension, like so:
image:
file: .gitpod.Dockerfile
# This is to get rid of the annoying popup feel free to leave this out
ports:
- port: 9000
onOpen: ignore
vscode:
extensions:
- felixfbecker.php-debug@1.13.0:WX8Y3EpQk3zgahy41yJtNQ==
Next create a new directory called .theia
and in that directory add a file called launch.json
and add the following content.
{
"version": "0.2.0",
"configurations": [
{
"type": "php",
"name": "Launch",
"request": "launch",
"stopOnEntry": true,
"program": "${file}",
"cwd": "${workspaceRoot}",
"externalConsole": false
}
]
}
Then have fun debugging PHP
Finally, here is a full example repository containing the complete Gitpod PHP debug configuration described above. You can try it by clicking here:
PECL Package Manager
Gitpod’s default workspace image also comes with the PECL package manager pre-installed. To install packages with it, you must use sudo pecl install <EXTENSION>
in your repository’s .gitpod.Dockerfile, e.g. like so:
FROM gitpod/workspace-full
RUN sudo pecl channel-update pecl.php.net && sudo pecl install <EXTENSION>
where <EXTENSION>
is the PHP extension you want to install, e.g. xdebug
.
Further Reading
- Gitpodifying a new Laravel Application by Etin Obaseki