top of page
bygasupbetiri

How To Compile And Install PHP 7.4 As PHP-FPM FastCGI For ISPConfig 3 On Ubuntu 18.04 LTS



Ubuntu 18.04 ships with PHP 7.2 as default PHP version. Major PHP versions are not 100% compatible with each other, so a website might require a newer or older PHP version to work. ISPConfig supports it to use multiple PHP versions on the same server, the PHP version can be selected for each website individually in the website settings. This tutorial shows how to install PHP 7.4 as FPM and FCGI mode alongside PHP 7.2 on a Ubuntu 18 server. The additional PHP versions are installed in the /opt folder, so their installation does nit affect the default PHP versionif(typeof ez_ad_units!='undefined')ez_ad_units.push([[728,90],'howtoforge_com-box-3','ezslot_11',106,'0','0']);__ez_fad_position('div-gpt-ad-howtoforge_com-box-3-0');1 Preliminary NoteI will install PHP 7.4. Please note that PHP-FPM can be used on both Apache and Nginx servers while FastCGI is available only for Apache servers.2 Install the prerequisitesInstall the prerequisites for building PHP and the nano editor that I will use to edit the config files:apt -y install build-essential nano net-tools autoconfapt -y install libfcgi-dev libfcgi0ldbl libjpeg-turbo8-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev libzip-dev libsqlite3-dev libonig-devln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.acd /usr/includeln -s x86_64-linux-gnu/curl(The last command is needed if you build PHP with --with-imap, because otherwise ./configure will stop with the following error:checking for crypt in -lcrypt... yesconfigure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.[email protected]:/tmp/php-7.4.0)3 Compile PHP 7.4 as PHP-FPM and FastcgiDownload and extract PHP archive:(adsbygoogle=window.adsbygoogle[]).push();cd /tmpwget -7.4.0.tar.gztar xfz php-7.4.0.tar.gzcd php-7.4.0Configure and build PHP 7.4 as follows (you can adjust the ./configure command to your needs, take a look at./configure --helpto see all available options; if you use a different ./configure command, it is possible that additional libraries are required, or the build process will fail):./configure --prefix=/opt/php-7.4 --with-pdo-pgsql --with-zlib-dir --with-freetype --enable-mbstring --enable-soap --enable-calendar --with-curl --with-zlib --enable-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --with-zip --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-intl --with-pear --enable-fpmThe last switch (--enable-fpm) makes sure this PHP version will work with PHP-FPM.makemake installCopy the files to the correct locations:if(typeof ez_ad_units!='undefined')ez_ad_units.push([[580,400],'howtoforge_com-medrectangle-4','ezslot_6',108,'0','0']);__ez_fad_position('div-gpt-ad-howtoforge_com-medrectangle-4-0');cp php.ini-production /opt/php-7.4/lib/php.inicp /opt/php-7.4/etc/php-fpm.conf.default /opt/php-7.4/etc/php-fpm.confcp /opt/php-7.4/etc/php-fpm.d/www.conf.default /opt/php-7.4/etc/php-fpm.d/www.confAdjust /opt/php-7.4/etc/php-fpm.confsed -i 's/;pid = run\/php-fpm.pid/pid = run\/php-fpm.pid/g' /opt/php-7.4/etc/php-fpm.confThen update /opt/php-7.4/etc/php-fpm.d/www.conf:cp /opt/php-7.4/etc/php-fpm.d/www.conf.default /opt/php-7.4/etc/php-fpm.d/www.confIf you have already additional PHP-versions installed, please check, that the port is not already in use:netstat -tapn grep -E ".*899.*php-fpm"If you use nginx as your webserver, adjust /opt/php-7.4/lib/php.ini:sed -i 's/;date.timezone =/date.timezone = "Europe\/Berlin"/g' /opt/php-7.4/lib/php.inised -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /opt/php-7.4/lib/php.ini3.1 Create the systemd unit fileNext, we'll create the system unit file which is used to start and stop the PHP-FPM daemon.if(typeof ez_ad_units!='undefined')ez_ad_units.push([[580,400],'howtoforge_com-box-4','ezslot_12',110,'0','0']);__ez_fad_position('div-gpt-ad-howtoforge_com-box-4-0');nano /lib/systemd/system/php-7.4-fpm.servicewith the following content:[Unit]Description=The PHP 7.4 FastCGI Process ManagerAfter=network.target[Service]Type=simplePIDFile=/opt/php-7.4/var/run/php-fpm.pidExecStart=/opt/php-7.4/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.4/etc/php-fpm.confExecReload=/bin/kill -USR2 $MAINPID[Install]WantedBy=multi-user.targetEnable the service and reload systemd:systemctl enable php-7.4-fpm.servicesystemctl daemon-reloadFinally, start PHP-FPM.systemctl start php-7.4-fpm.serviceTo enable the Zend OPcache:echo zend_extension=opcache.so >> /opt/php-7.4/lib/php.ini3.2 Enable Memcache (optional)Install memcache with these commands.cd /opt/php-7.4/etc../bin/pecl -C ./pear.conf update-channels../bin/pecl -C ./pear.conf install memcachedand enable memacheecho extension=memcached.so >> /opt/php-7.4/lib/php.ini3.3 Install xDebug extension (optional)The xDebug module is a debugging extension for PHP. The installation is optional.Install xDebug with these commands.cd /opt/php-7.4/etc../bin/pecl -C ./pear.conf update-channels../bin/pecl -C ./pear.conf install xdebugand enable xDebugecho zend_extension=/opt/php-7.4/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so >> /opt/php-7.4/lib/php.iniFinally restart the php-fpm daemon:systemctl start php-7.4-fpm.serviceTest the PHP version:cd /opt/php-7.4/bin./php --version3.4 Enable PHP 7.4 in ISPConfigIn ISPConfig 3.1, you can configure the new PHP version under System > Additional PHP Versions. On the Name tab, you just fill in a name for the PHP version (e.g. PHP 7.4) - this PHP version will be listed under this name in the website settings in ISPConfig:Go to the FastCGI Settings tab and fill out the fields as follows:Path to the PHP FastCGI binary: /opt/php-7.4/bin/php-cgiPath to the php.ini directory: /opt/php-7.4/libThen go to the PHP-FPM Settings tab and fill out the fields as follows:Path to the PHP-FPM init script: php-7.4-fpmPath to the php.ini directory: /opt/php-7.4/libPath to the PHP-FPM pool directory: /opt/php-7.4/etc/php-fpm.d5 LinksPHP: ISPConfig: Debian: view as pdf printShare this page:Suggested articles18 Comment(s)Add commentName *Email *tinymce.init( bold italic link",);CommentsBy: ustoopia Reply Thank you very much for this tutorial. I was almost half way through it doing it by myself but I was too insecure to do this on production machines. So I decided to setup a test environment. And then I noticed this now post so I tried it without even reading up on it first. Worked like charm!! I'm confident enough now to also set up php 7.4 on some production machines.As always, great job!! Keep up the good work! By: corto Reply hello, and thx for the tutorial.do it work on debian 9?By: why Reply Please dont advocate this advice. Debsury already has PHP 7.4 packaged.As soon as you hack out the frame work of using a repo, all bets are off. Thats for security and quality of package building. Please see


By: svenner Reply thanks great work...is there a guide for php 7.4 on centos 7 with ispconfig, or anyone else try this guide on a centos machine ? By: Matteo Busolin Reply Thanks for the tutorial. I suggest to add another (optional) section after the point 3.2 to install imagick module for php-fpm (very useful if you need to host new wordpress websites). I achived this following these steps:




How to compile and install PHP 7.4 as PHP-FPM FastCGI for ISPConfig 3 on Ubuntu 18.04 LTS


2ff7e9595c


0 views0 comments

Recent Posts

See All

Commentaires


bottom of page