Hello! I am trying to change the version of PHP on my server. I can’t seem to change it at the domain or subdomain levels.
As you can see from the attached screenshot, there is no default selection for PHP script execution mode, nor is there a default website directory, like there used to be.
I tried changing the execution mode to FCGId, hit Enabled on the PHP Versions and filled in / as the Website subdirectory, but no dice.
As you can see, there’s no default set for FPM vs. FCGId, nor any default website (like in the old configuration), and nothing I put in there seems to stick or have any impact.
Exactly my point – it should have a mode pre-selected, but does not. It seems as if there’s no connection between that screen and what is happening on my server. The site itself indicates it’s running 7.4.30, regardless of what I do on that screen.
I am not sure, though it may have to do with this piece of information:
While that topic is going for a php version for a specific path, it also mentions the option is to disappear, Who knows that may be the reason for no default version being marked / recognized in the configs.
We will set all new install default to PHP-FPM with Virtualmin 7.2, as of now the default was mod_php (must never be used nowadays).
Does the issue disappear if you choice either of the modes first, preferably PHP-FPM, and hit save button? After it’s saved, go back to PHP Options page – does it get displayed correctly?
Sadly i can not fully recall what has happened, it was on a production system and some quick fiddling around in the config files itself made it work as expected,
I just recall noticing the same “no selection of any option” happening. experience / using virtual/webmin for a fair few years has thought me to not make changes using virtualmin if things get displayed in strange ways and use manual configs to fix things beforehand, as making changes while things are displayed wrong often gives unpredictable results.
For me virtualmin is more of a helper tool as i can / do most things on the console / configs directly.
I do not think this is really a good solution for “beginners”, though this vultr link and this rocky linux guide might get you some insights on what it may involve to manually configure.
The pages are really incompatible with how web/virtualmin tends to setup and isolate users in configurations. so be careful if you proceed. If able let the support team try and find the proper bug fix for you as it also helps to prevent even more complicated issues down the line.
ii libphp7.4-embed 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 HTML-embedded scripting language (Embedded SAPI library)
ii php-cgi 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all server-side, HTML-embedded scripting language (CGI binary) (default)
ii php-cli 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all command-line interpreter for the PHP scripting language (default)
ii php-common 2:92+ubuntu20.04.1+deb.sury.org+2 all Common files for PHP packages
ii php-fpm 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all server-side, HTML-embedded scripting language (FPM-CGI binary) (default)
ii php-gd 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all GD module for PHP [default]
ii php-gnupg 1.5.1-1+ubuntu20.04.1+deb.sury.org+10 amd64 PHP wrapper around the gpgme library
ii php-mbstring 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all MBSTRING module for PHP [default]
ii php-mysql 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all MySQL module for PHP [default]
ii php-pear 1:1.10.13+submodules+notgz+2022032202-2+ubuntu20.04.1+deb.sury.org+1 all PEAR Base System
ii php-xml 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii php-zip 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all Zip module for PHP [default]
ii php7.4-bcmath 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 Bcmath module for PHP
ii php7.4-bz2 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 bzip2 module for PHP
ii php7.4-cgi 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 server-side, HTML-embedded scripting language (CGI binary)
ii php7.4-cli 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 command-line interpreter for the PHP scripting language
ii php7.4-common 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 documentation, examples and common module for PHP
ii php7.4-curl 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 CURL module for PHP
ii php7.4-fpm 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii php7.4-gd 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 GD module for PHP
ii php7.4-gnupg 1.5.1-1+ubuntu20.04.1+deb.sury.org+10 amd64 PHP wrapper around the gpgme library
ii php7.4-json 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 JSON module for PHP
ii php7.4-mbstring 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 MBSTRING module for PHP
ii php7.4-mysql 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 MySQL module for PHP
ii php7.4-opcache 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 Zend OpCache module for PHP
ii php7.4-pspell 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 pspell module for PHP
ii php7.4-readline 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 readline module for PHP
ii php7.4-soap 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 SOAP module for PHP
ii php7.4-xml 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 DOM, SimpleXML, XML, and XSL module for PHP
ii php7.4-xmlrpc 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 XMLRPC-EPI module for PHP
ii php7.4-zip 1:7.4.30-3+ubuntu20.04.1+deb.sury.org+1 amd64 Zip module for PHP
ii php8.1-bcmath 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 Bcmath module for PHP
ii php8.1-bz2 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 bzip2 module for PHP
ii php8.1-cgi 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 server-side, HTML-embedded scripting language (CGI binary)
ii php8.1-cli 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 command-line interpreter for the PHP scripting language
ii php8.1-common 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 documentation, examples and common module for PHP
ii php8.1-curl 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 CURL module for PHP
ii php8.1-fpm 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii php8.1-gd 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 GD module for PHP
ii php8.1-imagick 3.7.0-2+ubuntu20.04.1+deb.sury.org+2 amd64 Provides a wrapper to the ImageMagick library
ii php8.1-intl 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 Internationalisation module for PHP
ii php8.1-mbstring 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 MBSTRING module for PHP
ii php8.1-mysql 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 MySQL module for PHP
ii php8.1-opcache 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 Zend OpCache module for PHP
ii php8.1-pspell 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 pspell module for PHP
ii php8.1-readline 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 readline module for PHP
ii php8.1-soap 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 SOAP module for PHP
ii php8.1-xml 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 DOM, SimpleXML, XML, and XSL module for PHP
ii php8.1-xmlrpc 3:1.0.0~rc3-4+ubuntu20.04.1+deb.sury.org+10 amd64 XML-RPC servers and clients functions for PHP
ii php8.1-zip 8.1.8-1+ubuntu20.04.1+deb.sury.org+1 amd64 Zip module for PHP
ii webmin-php-pear 1.5 all Webmin module for PHP Pear Modules
I unfortunately couldn’t reproduce your issue. Although, I would suggest purging libphp7.4-embed package by running apt-get purge libphp7.4-embed – I doubt you really need this package installed.
Save all installed packages to install-packages.txt by running:
dpkg -l | grep ^ii > install-packages.txt
… and attach this file to this ticket by drag and dropping it in reply box.
Also, how does the site Nginx config look like? This is a file under /etc/nginx/sites-enabled directory?
Can you save this file first and also attach to this ticket (you can replace actual domain name with example.com). After the file is preserved, can you go to Edit Virtual Server and disable both Nginx website and Nginx SSL website features and then re-enable them on the second shot? This would re-generate Nginx config for a domain. Does this help to sort PHP cannot be changed issue?
Lastly, does it work if you try using CLI to change execution mode by running:
It looks like this may be the problem. I looked at other sites in my VirtualMin config, where I haven’t done any custom modification of the Nginx configuration, and the option to select PHP is normal. On this one site, I have a customized file, and it is not working. The custom conf is attached.
It seems odd that it doesn’t work, though. I mean, it should just be replacing the following line, right?
Okay, so finally got around to trying out the disable/enable approach. Interestingly, it did not entirely regenerate the base Virtualmin config files for Nginx, but instead maintained my original files. Now when I try to access the site, it says “502 Bad Gateway.”
I tried restarting the PHP 8.1 FPM service; no dice. I changed it from FPM to FCGId, and it works, but is running PHP 7.4.3. Went back in, changed it to PHP 8.1, with FCGId, still says it’s running 7.4.3.
Changed it back to FPM – note that when I change it to FPM or FCGId, there is no option to select the version. I have to do it afterwards. This time, without changing anything, it registers as 8.1.
So, basically, the fix appears to be:
Disable the Nginx site and SSL site.
Enable them.
Switch from FPM to FCGId.
Switch it back to FPM.