PHPMyAdmin/setup 显示空白屏幕,而 PMA 本身工作

Posted

技术标签:

【中文标题】PHPMyAdmin/setup 显示空白屏幕,而 PMA 本身工作【英文标题】:PHPMyAdmin/setup show blank screen, while PMA itself works 【发布时间】:2013-06-11 23:54:50 【问题描述】:

我正在 nginx 服务器上设置 phpMyAdmin。系统本身可以工作,但是,我应该能够更改设置(即构建新的 config.inc.php)的 /setup 页面是空白的。它不显示错误,返回 200 OK 并且 /var/log/nginx/error.log 中没有任何内容。

这是我对这个服务器块的 nginx 配置:

listen [::]:80;

root                /usr/share/phpmyadmin; # path to my pma installation
index               index.php;
charset             utf-8;

server_name         my-host;

location / 
    autoindex       off;


location ~ \.php$ 
    try_files       $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_index   index.php;
    include         fastcgi_params;


location ~ /\. 
    deny            all;


location /libraries 
    deny            all;


location /setup/lib 
    deny            all;

有人知道这里发生了什么吗?

/setup/lib/common.inc.php 文件中似乎有错误:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Loads libraries/common.inc.php and preforms some additional actions
 *
 * @package PhpMyAdmin-setup
 */

/**
 * Do not include full common.
 * @ignore
 */
echo 1;
define('PMA_MINIMUM_COMMON', true);
define('PMA_SETUP', true);
chdir('..');
echo 2;
if (!file_exists('./libraries/common.inc.php')) 
    die('Bad invocation!');


echo 3;
require_once './libraries/common.inc.php';
require_once './libraries/config/config_functions.lib.php';
require_once './libraries/config/messages.inc.php';
require_once './libraries/config/ConfigFile.class.php';
require_once './libraries/url_generating.lib.php';
require_once './libraries/user_preferences.lib.php';
echo 4;

// use default error handler
restore_error_handler();

echo 5;

// Save current language in a cookie, required since we use PMA_MINIMUM_COMMON
$GLOBALS['PMA_Config']->setCookie('pma_lang', $GLOBALS['lang']);

echo 6;

ConfigFile::getInstance()->setPersistKeys(array(
    'DefaultLang',
    'ServerDefault',
    'UploadDir',
    'SaveDir',
    'Servers/1/verbose',
    'Servers/1/host',
    'Servers/1/port',
    'Servers/1/socket',
    'Servers/1/extension',
    'Servers/1/connect_type',
    'Servers/1/auth_type',
    'Servers/1/user',
    'Servers/1/password'));

echo 7;

// allows for redirection even after sending some data
ob_start();

输出:123456

【问题讨论】:

我建议查看php错误日志,白屏通常意味着php脚本在中间某处死亡。 @MohammadAbuShady 我正在使用 php-fastcgi,错误被传递给 nginx 并会出现在 nginx 日志中。 我知道,但有时它不会,我以前遇到过很多次这样的事情,不会伤害跟踪 php 错误日志并尝试刷新 phpmyadmin。 @MohammadAbuShady 没有 PHP 错误日志,因为它会将所有内容都传递给 nginx。 如何编辑setup/index.php 并使第一行类似于die("working"); 并查看它是否有效,以了解它的nginx 或php 是否有效,如果它有效,请打开错误报告并移除模具和再次运行它 【参考方案1】:

这很可能与 bug #1175142 相同,已在 4:4.0.1-2 修复。问题是在 Debian 打包的 phpMyAdmin 中,配置脚本包含一个辅助函数,这会阻止配置文件被多次加载。

【讨论】:

【参考方案2】:

我遇到了同样的问题,我通过更改特定于我的 phpmyadmin 目录的 nginx conf 中的默认缓冲区大小来解决它。最后 4 行是我添加/更改的。

location ~ \.php$ 
  try_files $uri =404;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  fastcgi_buffer_size 128k;
  fastcgi_buffers 256 4k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;

【讨论】:

【参考方案3】:

修复了在我的 /etc/nginx/conf.d/virtual.conf 文件中添加这些选项:

location ~ \.php$ 
....
  include fastcgi_params;
  fastcgi_buffer_size 128k;
  fastcgi_buffers 256 4k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;
...

并重新启动 nginx。

【讨论】:

以上是关于PHPMyAdmin/setup 显示空白屏幕,而 PMA 本身工作的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView 不显示从本地主机发送的 JSON 只是空白屏幕

Sencha Touch 2 - Iphone 应用程序 - 空白屏幕

Ionic 3 - 应用程序在使用 --prod 构建后显示空白屏幕但使用开发模式

当我在PHP中包含文件时,它给我一个空白屏幕?

Android Studio:新活动以空白屏幕打开

屏幕截图显示为空白 - Swift