【问题标题】:Setup PHPMyAdmin with ngnix on Ubuntu only downloads files在 Ubuntu 上使用 nginx 设置 PHPMyAdmin 只下载文件
【发布时间】:2021-03-10 13:33:23
【问题描述】:

我需要解决一个问题。我有公共地址的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;
            }

    }
}

【问题讨论】:

  • 您的嵌套位置与 URI 不匹配,请使用 location ~ \.php$fastcgi_param SCRIPT_FILENAME $request_filename;。见this answer

标签: mysql nginx phpmyadmin


【解决方案1】:

我们仍然需要告诉 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 sn-p 以及与 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

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 2017-01-29
    • 2018-12-16
    • 1970-01-01
    • 2019-01-23
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多