익명 05:16

Why does phpMyAdmin show an almost empty page instead of the login page?

Why does phpMyAdmin show an almost empty page instead of the login page?

I installed phpMyAdmin with Nginx and MariaDB on my FreeBSD server at home. When I visit the login page, I see this instead of a login page:

screenshot of the almost empty phpMyAdmin page

Here are the versions of the different components:

  • FreeBSD 15.0
  • Nginx 1.30.4
  • MariaDB 12.3.2
  • PHP 8.6.0alpha1

usr/local/etc/mysql/my.cnf contains the following (plus commented out lines):

[client-server]
port    = 3306
socket  = /var/run/mysql/mysql.sock

I added the following in /usr/local/www/phpMyAdmin/config.inc.php:

$cfg['Servers'][$i]['socket'] = '/var/run/mysql/mysql.sock';

The config block I added for Nginx is the following:

server {
        listen 80;
        #server_name app.example.com;
        root /usr/local/www/phpMyAdmin;

        index index.php index.html index.htm;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/local/www/phpMyAdmin;
        }
}

The logs don't contain anything useful to figure out what's wrong. I tried with different versions of php and phpMyAdmin and different browsers, but I get the same result. I searched online and didn't find any post describing the same problem.

What am I missing?


Update

When I comment out the line I added in /usr/local/www/phpMyAdmin/config.inc.php and restart the services, the login page is reachable, but credentials that are either valid or invalid yield the same error:

enter image description here enter image description here

Also, here is more information, as requested by Ramhound:

/usr/local/etc/nginx/fastcgi_params:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

/usr/local/etc/php-fpm.conf (without empty lines or comments):

[global]
pid = run/php-fpm.pid
include=/usr/local/etc/php-fpm.d/*.conf

/usr/local/etc/php-fpm.d/www.conf (without empty lines or comments):

[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

/var/log/php-fpm.log is a repetition of the following:

[21-Jul-2026 13:44:43] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
[21-Jul-2026 13:44:43] NOTICE: fpm is running, pid 68652
[21-Jul-2026 13:44:43] NOTICE: ready to handle connections
[21-Jul-2026 13:46:10] NOTICE: Terminating ...
[21-Jul-2026 13:46:10] NOTICE: exiting, bye-bye!
[21-Jul-2026 13:47:52] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
[21-Jul-2026 13:47:52] NOTICE: fpm is running, pid 53605
[21-Jul-2026 13:47:52] NOTICE: ready to handle connections
[21-Jul-2026 19:47:28] NOTICE: Finishing ...
[21-Jul-2026 19:47:28] NOTICE: exiting, bye-bye!
[21-Jul-2026 19:47:32] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
[21-Jul-2026 19:47:32] NOTICE: fpm is running, pid 19606
[21-Jul-2026 19:47:32] NOTICE: ready to handle connections

Update 2

I tried Bilal's suggestion to downgrade to an earlier version of PHP:

$ php -v
PHP 8.2.32 (cli) (built: Jul  9 2026 03:03:59) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.32, Copyright (c) Zend Technologies
$ php -m
[PHP Modules]
bz2
Core
ctype
date
filter
gd
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
random
Reflection
session
SPL
standard
xml
xmlwriter
zip
zlib

[Zend Modules]

However this doesn't solve the problem.



Top Answer/Comment:

Look at your own screenshot: PHP version, PHP extension, and database client version are all blank. That's the tell. Those get filled in by PHP at runtime, so the problem is PHP, not nginx or your socket.

You're on PHP 8.6.0alpha1, and phpMyAdmin 5.2.3 doesn't support it. It's an alpha (a dev snapshot), while 5.2.3 was written for stable PHP up to ~8.2. On an alpha you get exactly this: the static HTML renders, but the parts that call into mysqli and PHP internals fail quietly, so no login form and blank version fields.

What you should do?

Drop back to a stable, supported PHP (8.2, or 8.3 at most) and restart php-fpm.

Make sure the mysqli extension is installed and loaded (php82-mysqli, matching your PHP version) and shows up in php -m. That blank "PHP extension" line is where mysqli should appear, so it may not be loaded at all.

Do the PHP downgrade first; the login page should come right back.

상단 광고의 [X] 버튼을 누르면 내용이 보입니다