PHP 8.3 Setup for Debian

Add PHP Repository

Add Sury PHP repository for latest PHP versions:

# Download and set up GPG key
curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg

# Add repository
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

# Update package lists
sudo apt update

Install PHP and Extensions

Install PHP 8.3 with common extensions:

sudo apt install \
    php8.3 \
    php8.3-cli \
    php8.3-fpm \
    php8.3-common \
    php8.3-mysql \
    php8.3-zip \
    php8.3-gd \
    php8.3-mbstring \
    php8.3-curl \
    php8.3-xml \
    php8.3-bcmath \
    php8.3-pdo \
    php8.3-tokenizer \
    php8.3-json

Configure PHP-FPM

Edit PHP-FPM configuration:

sudo nano /etc/php/8.3/fpm/php.ini

Recommended settings:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 180
max_input_vars = 3000

Set Up PHP-FPM Pool

Configure PHP-FPM pool settings:

sudo nano /etc/php/8.3/fpm/pool.d/www.conf

Recommended pool configuration:

[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 10

Start and Enable Services

# Start PHP-FPM
sudo systemctl start php8.3-fpm

# Enable auto-start
sudo systemctl enable php8.3-fpm

# Check status
sudo systemctl status php8.3-fpm

Verify Installation

# Check PHP version
php -v

# Check installed modules
php -m

# Check PHP-FPM status
sudo systemctl status php8.3-fpm