PHP
Add the Ondřej Surý PPA for PHP
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Install PHP
sudo apt install php-{cli,fpm,mysql,curl,xml,mbstring,gd,zip,redis,bcmath,soap,imagick}
Check the PHP Version
php -v
PHP 8.4.7 (cli) (built: May 9 2025 06:54:31) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.7, Copyright (c) Zend Technologies
with Zend OPcache v8.4.7, Copyright (c), by Zend Technologies
Check the PHP-FPM
sudo systemctl status php8.4-fpm
Install Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
composer --version
Setting open_basedir in .user.ini
WordPress example
sudo nano /var/www/example.com/.user.ini
open_basedir=/var/www/example.com/:/tmp/
Laravel app example
sudo nano /var/www/laravel-app.com/public/.user.ini
open_basedir=/var/www/laravel-app.com/public/:/tmp/:/var/www/laravel-app.com/
Set the immutable attribute
sudo chattr +i /var/www/example.com/.user.ini
sudo chattr -i /var/www/example.com/.user.ini
Tesing
sudo nano /var/www/example.com/test.php
<?php
$contents = file_get_contents("../another.com/README.md");
var_dump($contents);
die();
If the response is false, it works.
