Install PHP (php-fpm) from source, apache and Amazon Linux 2023
Note: PHP 8.4 using php-fpm and httpd Apache/2.4.62 (Amazon Linux)
Install php from source because AL2023 is not supported now.
Install php and config
sudo dnf install -y gcc libxml2-devel bzip2-devel curl-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel autoconf bison re2c libicu-devel libxslt-devel oniguruma-devel openssl-devel mariadb105-devel sqlite-devel systemd-devel gcc gcc-c++ libzip-devel
wget https://www.php.net/distributions/php-8.4.2.tar.gz
tar -xvf php-8.4.2.tar.gz
cd php-8.4.2
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-fpm --with-fpm-systemd --with-fpm-user=apache --with-fpm-group=apache --enable-mbstring --with-curl --with-openssl --with-zlib --enable-bcmath --enable-soap --enable-intl --with-pdo-mysql --with-zip --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
make
sudo make install
echo 'export PATH=$PATH:/usr/local/php/bin' >> ~/.bashrc
source ~/.bashrc
php -v
Config php-fpm
cd php-8.4.2
sudo cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
sudo touch /var/log/php-fpm.log
sudo chown apache:apache /var/log/php-fpm.log
sudo chmod 644 /var/log/php-fpm.log
sudo vi /usr/local/php/etc/php-fpm.conf
Change configuration:
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
include=/usr/local/php/etc/php-fpm.d/*.conf
sudo vi /usr/local/php/etc/php-fpm.d/www.conf
Change configuration:
; Unix user/group of the child processes. This can be used only if the master
user = apache
group = apache
…
listen = /var/run/php-fpm.sock
…
listen.owner = apache
listen.group = apache
listen.mode = 0660
sudo systemctl deamon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
sudo systemctl status php-fpm.service
Install httpd and config
sudo dnf install httpd
sudo usermod -a -G apache ec2-user
exit
groups
sudo chown -R ec2-user:apache /var/www
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
sudo vi /etc/httpd/conf/httpd.conf
Add config to httpd.conf:
Note: above IncludeOptional conf.d/*.conf
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
sudo systemctl restart php-fpm.service
sudo systemctl restart httpd.service
Verify: curl localhost/phpinfo.php
Ref
https://docs.aws.amazon.com/linux/al2023/ug/ec2-lamp-amazon-linux-2023.html#prepare-lamp-server-2023