首页 > 解决方案 > 在 Ubuntu 上使用 ngnix 设置 PHPMyAdmin 只下载文件

问题描述

我需要解决一个问题。我有公共地址的ngnix,我需要通过ip在本地网络中使用phpmyadmin访问我的数据库。我已经按照指南在地址 /usr/share/phpmyadmin 配置了它。目前我可以从这个目录下载 php 文件,但没有执行。我需要做什么才能从浏览器连接到 phpmyadmin?这是我的 ngnix 配置:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

server_name 192.168.1.101;

    location ^~ /permanentmark/ {
        alias /usr/share/phpmyadmin/;
        index index.php index.html;
        location ~ /pma(/.*\.php) {
            include fastcgi_params;
            fastcgi_param SERVER_NAME localhost;
            fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$1;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            }

    }
}

标签: mysqlnginxphpmyadmin

解决方案


我们仍然需要告诉 Nginx 使用我们的 PHP 处理器来处理动态内容。我们在服务器块级别执行此操作(服务器块类似于 Apache 的虚拟主机)。通过键入以下命令打开默认的 Nginx 服务器块配置文件:

sudo nano /etc/nginx/sites-available/default

Nginx 默认服务器块文件如下所示:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.html index.htm index.nginx-debian.html;

server_name _;

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

我们需要为我们的站点对该文件进行一些更改。

首先,我们需要添加 index.php 作为 index 指令的第一个值,以便在请求目录时提供名为 index.php 的文件(如果可用)。我们可以修改 server_name 指令以指向我们服务器的域名或公共 IP 地址。对于实际的 PHP 处理,我们只需要取消注释处理 PHP 请求的文件段,方法是从每行前面删除井号 (#)。这将是 location ~.php$ 位置块、包含的 fastcgi-php.conf 片段以及与 php-fpm 关联的套接字。我们还将使用相同的方法取消注释处理 .htaccess 文件的位置块。Nginx 不处理这些文件。如果这些文件中的任何一个碰巧进入了文档根目录,则不应将它们提供给访问者。

您需要进行的更改在以下文本中:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;

server_name server_domain_or_IP;

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

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 }

location ~ /\.ht {
    deny all;
  }
}

完成上述更改后,您可以保存并关闭文件。通过键入以下内容来测试配置文件的语法错误:

sudo nginx -t

如果报告任何错误,请返回并重新检查您的文件,然后再继续。准备好后,重新加载 Nginx 以进行必要的更改:

sudo systemctl reload nginx

推荐阅读