phpMyAdmin 错误 504 网关超时重新加载

Posted

技术标签:

【中文标题】phpMyAdmin 错误 504 网关超时重新加载【英文标题】:phpMyAdmin Error 504 Gateway Timeout Reloaded 【发布时间】:2014-12-03 21:30:49 【问题描述】:

我的 phpmyadmin 有一个非常烦人的问题。它突然出现了。据我所知,我的专用服务器没有发生任何变化。

当我尝试在浏览器中执行任何查询或显示执行时间超过 1 秒的视图时(Windows 7 上的 firefox,即行为相同),我收到以下错误:

Error in Processing Request 
Error code: 504 
Error text: Gateway Timeout

查询可以或不需要有count(*)。他们在 5m - 50m 行的表格上工作。

当我点击 phpmyadmin 中的任何链接时,有时会出现相同的错误,例如“浏览”、“服务器”或“结构”。

在同一台专用服务器上运行更密集的查询的 php 脚本可以完美运行。

以下是一些技术细节:

Database server
•Server: Localhost via UNIX socket
•Server type: mysql
•Server version: 5.5.38-0ubuntu0.14.04.1-log - (Ubuntu)
•Protocol version: 10
•User: XXX@localhost
• Server charset:  UTF-8 Unicode (utf8)  

Web server
•Apache/2.4.7 (Ubuntu)
•Database client version: libmysql - 5.5.38
•PHP extension: mysqli Documentation

phpMyAdmin
•Version information: 4.2.3deb1.trusty~ppa.1

我在网上找到了一些线索,并尝试在我的 conf.inc.php 文件中添加最后两行(见下文),但没有任何变化,重启服务器后也是如此:

<?php
/**
 * Debian local configuration file
 *
 * This file overrides the settings made by phpMyAdmin interactive setup
 * utility.
 *
 * For example configuration see
 *   /usr/share/doc/phpmyadmin/examples/config.sample.inc.php
 * or
 *   /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php
 *
 * NOTE: do not add security sensitive data to this file (like passwords)
 * unless you really know what you're doing. If you do, any user that can
 * run PHP or CGI on your webserver will be able to read them. If you still
 * want to do this, make sure to properly secure the access to this file
 * (also on the filesystem level).
 */

// Load secret generated on postinst
include('/var/lib/phpmyadmin/blowfish_secret.inc.php');

// Load autoconf local config
include('/var/lib/phpmyadmin/config.inc.php');

/**
 * Server(s) configuration
 */
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
$i++;

/**
 * Read configuration from dbconfig-common
 * You can regenerate it using: dpkg-reconfigure -plow phpmyadmin
 */
if (is_readable('/etc/phpmyadmin/config-db.php')) 
    require('/etc/phpmyadmin/config-db.php');
 else 
    error_log('phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php.'
        . ' Check group www-data has read access.');


/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) 
    /* Authentication type */
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    /* Server parameters */
    if (empty($dbserver)) $dbserver = 'localhost';
    $cfg['Servers'][$i]['host'] = $dbserver;

    if (!empty($dbport) || $dbserver != 'localhost') 
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['port'] = $dbport;
    
    //$cfg['Servers'][$i]['compress'] = false;
    /* Select mysqli if your server has it */
    $cfg['Servers'][$i]['extension'] = 'mysqli';
    /* Optional: User for advanced features */
    $cfg['Servers'][$i]['controluser'] = $dbuser;
    $cfg['Servers'][$i]['controlpass'] = $dbpass;
    /* Optional: Advanced phpMyAdmin features */
    $cfg['Servers'][$i]['pmadb'] = $dbname;
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
    $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
    $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';

    /* Uncomment the following to enable logging in to passwordless accounts,
     * after taking note of the associated security risks. */
    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

    /* Advance to next server for rest of config */
    $i++;


/* Authentication type */
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
//$cfg['Servers'][$i]['connect_type'] = 'tcp';
//$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
//$cfg['Servers'][$i]['extension'] = 'mysql';
/* Optional: User for advanced features */
 //$cfg['Servers'][$i]['controluser'] = 'pma';
 //$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Optional: Advanced phpMyAdmin features */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
/* Uncomment the following to enable logging in to passwordless accounts,
 * after taking note of the associated security risks. */
// $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

//$cfg['AllowArbitraryServer'] = true;
$cfg['LoginCookieValidity'] = 86400;
$cfg['MaxExactCount'] = 0;
$cfg['MaxExactCountViews'] = 0;

请帮帮我。

【问题讨论】:

【参考方案1】:

最后,我发现这不是我的服务器上的问题,但我当时的互联网连接提供商只是取消(发送此错误消息)所有需要超过 10 秒才能完成的 https 请求。

【讨论】:

【参考方案2】:

如果你在 nginx 中使用 php fcgi,请将其添加到

                fastcgi_intercept_errors on;
                fastcgi_buffers 8 16k;
                fastcgi_buffer_size 32k;
                fastcgi_connect_timeout 900;//in 900 timeout
                fastcgi_send_timeout 900; //in 900secend
                fastcgi_read_timeout 900; //in 900secend

/etc/nginx/sites-enabled/phpmyadmin.conf 中的示例文件

    location ~ ^/phpmyadmin/(.+\.php)$ 
        alias /usr/share/phpmyadmin/$1;

            fastcgi_pass unix:/run/php/php7.3-fpm.sock;  //check what version php you have in /etc/php/

            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;

                fastcgi_intercept_errors on;
                fastcgi_buffers 8 16k;
                fastcgi_buffer_size 32k;
                fastcgi_connect_timeout 900;
                fastcgi_send_timeout 900;
                fastcgi_read_timeout 900;
    

【讨论】:

【参考方案3】:

我在 http 块中的文件 /etc/nginx/nginx.conf 中添加了以下行:

fastcgi_read_timeout 360;

重启nginx

sudo service nginx 重启

祝你好运!!!记得喜欢我。非常感谢!

【讨论】:

【参考方案4】:

也许你可以在 /etc/nginx/ngix.conf 中检查或增加 nginx 超时设置?检查 proxy_send_timeout 和 proxy_read_timeout。

【讨论】:

以上是关于phpMyAdmin 错误 504 网关超时重新加载的主要内容,如果未能解决你的问题,请参考以下文章

AWS - 错误 504 - 网关超时 - Flask 应用程序

增加 504 超时错误

504 网关超时媒体寺

Django+Nginx+uWSGI = 504 网关超时

连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时

将项目合并到亚马逊 EC2 后,file_get_contents 504 网关超时?