Estimated reading time: 2 minutes
* Compiling Needs Memory Space!\
If the memory space of your device is Lower than 2GB, You had better Create a Swap.
-
Prepare
dnf groupinstall "Development Tools" dnf config-manager --set-enabled crb dnf makecache --refresh dnf install libxml2-devel libicu-devel sqlite-devel libxslt-devel libpng-devel libjpeg-devel freetype-devel libzip-devel git systemd-devel curl-develInstall Oniguruma
git clone https://github.com/kkos/oniguruma.git cd oniguruma ./autogen.sh ./configure --bindir=/usr/sbin/ \ --sbindir=/usr/sbin/ \ --libexecdir=/usr/libexec \ --sysconfdir=/etc/ \ --localstatedir=/var \ --libdir=/usr/lib64/ \ --includedir=/usr/include/ \ --datarootdir=/usr/share \ --infodir=/usr/share/info \ --localedir=/usr/share/locale \ --mandir=/usr/share/man/ \ --docdir=/usr/share/doc/onig make && make installAdd user for FPM
adduser www -
Copy the link you need and download and then unzip.
wget https://www.php.net/distributions/php-8.1.2.tar.gz tar -xzf php-8.1.2.tar.gz -
Pre-Compile
Here are the recommended options (FPM included):
cd php-8.1.2 # Replace UR_WEB_USER into your user for php-fpm ./configure --prefix=/usr/local/php/ --enable-fpm --with-openssl --enable-bcmath --with-curl --enable-ftp --enable-gd --enable-mbstring --enable-sockets --enable-pcntl --with-zlib --enable-intl --with-fpm-systemd --enable-pdo --enable-xml --with-zip --with-gettext --with-freetype --enable-opcache --enable-shmop --with-fpm-user=UR_WEB_USER --with-fpm-group=UR_WEB_USERIf need to support MySQL, add those options you need. The Directories and Configs depend on your env.
(MySQL here installed by DNF)--enable-mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli --with-mysql-sock=/var/lib/mysql/mysql.sock -
Compile & Install
make && make install -
Finish Config
Copy Config File to the Install Directory
cp PATH_TO_THE_SRC/php.ini-production /usr/local/php/php.ini cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.confAdd Php to systemd as a service (Recommended, make it easier to manage)
- Edit PID Location
# Open the File vim /usr/local/php/etc/php-fpm.conf # Find the part and Change into pid = /var/run/php-fpm.pid- Write the systemd script
# Create one and edit vim /lib/systemd/system/php-fpm.service- Then, add the content.
[Unit] Description=The PHP FastCGI Process Manager After=syslog.target network.target [Service] Type=forking PIDFile=/var/run/php-fpm.pid ExecStart=/usr/local/php/sbin/php-fpm ExecReload=/bin/kill -USR2 $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target- Reload systemd
systemctl daemon-reload -
Enjoy it!