web-dev-qa-db-ja.com

Nginxを使用するエイリアスが原因でphpMyAdminログインの無限ループが発生する

最近、Nginxを使用してWebサーバーをセットアップしようとしています(通常はApacheを使用しています)。しかし、phpMyAdminをaliasに設定しようとして問題が発生しました。エイリアスはphpMyAdminログイン画面にも正しく対応しますが、有効な認証情報を入力してヒットすると、エラーなしでログイン画面に戻ります。

私にはcookieまたはセッションの問題のように聞こえますが、phpMyAdminディレクトリにシンボリックリンクして、シンボリックリンクされたバージョンからログインしようとすると、正常に動作します!シンボリックリンクとエイリアスの両方が同じ数のCookieを設定し、どちらも正しいドメインとパスのCookieを設定しているようです。

PHPエイリアスの私のNginx設定は次のとおりです。

location ~ ^/phpmyadmin/(.*\.php)$ {
    alias /usr/share/phpMyAdmin/$1;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}
  • Nginx 0.8.53を実行しています
  • PHP 5.3.3
  • MySQL 5.1.47
  • phpMyAdmin 3.3.9-自己インストール
  • そして、php-mcryptがインストールされます。

他の誰かが以前にこの動作を経験しましたか?誰でもそれを修正する方法について何かアイデアがありますか?

5
Seb Dangerfield

私はまったく同じ問題を抱えていました。私は/var/www/somesiteにドキュメントルートがあるウェブサイトを運営しており、phpmyadminをサイトのサブフォルダにフックしたいと思っていました。私はnginxのこの設定でこれを試しました:

root /var/www/somesite;

location /pma/ {
    alias /usr/share/phpmyadmin/;
}

location ~ ^/pma/(.+\.php)$ {
    alias /usr/share/phpmyadmin/$1;
    fastcgi_pass   unix:/tmp/phpfpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $request_filename;
    include fastcgi_params;
}

これは機能しているように見えましたが、あなたが説明したように、私がログインしたときは、最初のページをもう一度見ました。エラーなし、何もありません。不正なパスワードを使用してログインすると、予想どおり、「MySQLサーバーにログインできません」というエラーが表示されます。

ソリューション
最後に私がしたことは、fastcgi_paramsからすべてのものをドラッグし、DOCUMENT_ROOTパラメータを変更することでこれを修正したことです。したがって、上記のnginx-configは次のように変更されました。

root /var/www/somesite;

location /pma/ {
    alias /usr/share/phpmyadmin/;
}

location ~ ^/pma/(.+\.php)$ {
    alias /usr/share/phpmyadmin/$1;
    fastcgi_pass   unix:/tmp/phpfpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $request_filename;

    # From 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      /usr/share/phpmyadmin; # <-- Changed
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    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;
    fastcgi_param  REDIRECT_STATUS    200;
}

(サイドノート:これはnginxの問題だと思います。エイリアスとドキュメントルートを同時に設定することはできません。実際には奇妙です。)

7
0scar

これは私の設定です:

location /phpmyadmin {
    alias   /usr/share/phpmyadmin;
    index index.php;
    location ~ /([^/]+\.php)$ {
        try_files /$1 =404;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        location ~ /phpmyadmin/js/([^/]+\.php)$ {
            try_files /phpmyadmin/js/$1 =404;
            fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}
2
G. Alex

Igorは、正確な構成が機能していることを示しています。

http://forum.nginx.org/read.php?2,3059,3060#msg-306

あなたはあそこに投稿して、彼らが言わなければならないことを見るかもしれません。あなたの設定は私にとっても完全に有効に見えます。

0
user15590

Nginx + phpfpmでphpMyAdminを実行している場合、それは確かに所有権の問題です。それを解決するには、次のアクションを実行します。
1。 /etc/php-fpm.d/www.confにあるphp-Fpm設定ファイルの "session.save_path"値(デフォルト値は "/ var/lib/php/session")を見てください。 listen.ownerユーザーとグループは、そこで定義されたパスフォルダーを所有する必要があります。
2。 Sudoとして「chown -R nginx:nginx/var/lib/php/session」を実行して修正します。
3。これで、phpMyAdminに問題なくログインできるはずです。

0
Ilimaan