phpMyAdmin Error fatal: llamada a la función no definida __ ()

Servidor que ejecuta RHEL 7 y PHP 5.4.16. Cuando trato de abrir / phpMyAdmin en mi navegador, me da el error:

Fatal error: Call to undefined function __() in /usr/share/phpMyAdmin/libraries/core.lib.php on line 242

 Call Stack # Time Memory Function Location 1 0.0008 348000 {main}( ) ../index.php:0 2 0.0018 503144 require_once( '/usr/share/phpMyAdmin/libraries/common.inc.php' ) ../index.php:12 3 0.0252 4224464 PMA_Config->__construct( ) ../common.inc.php:304 4 0.0252 4224712 PMA_Config->load( ) ../Config.class.php:100 5 0.0265 4309888 PMA_Config->checkConfigSource( ) ../Config.class.php:849 6 0.0265 4311088 PMA_fatalError( ) ../Config.class.php:1169 

Creo que he instalado todas las bibliotecas necesarias y que apache tiene los permisos adecuados para el directorio session.save_path, que fueron los problemas que se habían planteado anteriormente. Ver: llamada a la función no definida error __ () – phpMyAdmin

¿Alguien puede darme una pista basada en esa stack de llamadas? Estas son las funciones de las líneas a las que hace referencia la stack, con la línea correspondiente escrita en el margen izquierdo:

core.lib.php en la línea 242:

  /** * displays the given error message on phpMyAdmin error page in foreign language, * ends script execution and closes session * * loads language file if not loaded already * * @param string $error_message the error message or named error message * @param string|array $message_args arguments applied to $error_message * @param boolean $delete_session whether to delete session cookie * * @return void */ function PMA_fatalError( $error_message, $message_args = null, $delete_session = true ) { /* Use format string if applicable */ if (is_string($message_args)) { $error_message = sprintf($error_message, $message_args); } elseif (is_array($message_args)) { $error_message = vsprintf($error_message, $message_args); } if ($GLOBALS['is_ajax_request']) { $response = PMA_Response::getInstance(); $response->isSuccess(false); $response->addJSON('message', PMA_Message::error($error_message)); } else { $error_message = strtr($error_message, array('
' => '[br]')); /* Load gettext for fatal errors */ if (!function_exists('__')) { // It is possible that PMA_fatalError() is called before including // vendor_config.php which defines GETTEXT_INC. See bug #4557 if (defined(GETTEXT_INC)) { include_once GETTEXT_INC; } else { include_once './libraries/php-gettext/gettext.inc'; } } // these variables are used in the included file libraries/error.inc.php 242 $error_header = __('Error'); $lang = $GLOBALS['available_languages'][$GLOBALS['lang']][1]; $dir = $GLOBALS['text_dir']; // on fatal errors it cannot hurt to always delete the current session if ($delete_session && isset($GLOBALS['session_name']) && isset($_COOKIE[$GLOBALS['session_name']]) ) { $GLOBALS['PMA_Config']->removeCookie($GLOBALS['session_name']); } // Displays the error message include './libraries/error.inc.php'; } if (! defined('TESTSUITE')) { exit; } }

common.inc.php en la línea 304:

 304 $GLOBALS['PMA_Config'] = new PMA_Config(CONFIG_FILE); if (!defined('PMA_MINIMUM_COMMON')) { $GLOBALS['PMA_Config']->checkPmaAbsoluteUri(); } 

Config.class.php en la línea 100:

  /** * constructor * * @param string $source source to read config from */ function __construct($source = null) { $this->settings = array(); // functions need to refresh in case of config file changed goes in // PMA_Config::load() 100 $this->load($source); // other settings, independent from config file, comes in $this->checkSystem(); $this->isHttps(); $this->base_settings = $this->settings; } 

Config.class.php en la línea 849:

  /** * loads configuration from $source, usually the config file * should be called on object creation * * @param string $source config file * * @return bool */ function load($source = null) { $this->loadDefaults(); if (null !== $source) { $this->setSource($source); } /** * We check and set the font size at this point, to make the font size * selector work also for users without a config.inc.php */ $this->checkFontsize(); if (! $this->checkConfigSource()) { 849 return false; } 

Config.class.php en la línea 1169:

  /** * check config source * * @return boolean whether source is valid or not */ function checkConfigSource() { if (! $this->getSource()) { // no configuration file set at all return false; } if (! file_exists($this->getSource())) { $this->source_mtime = 0; return false; } if (! is_readable($this->getSource())) { // manually check if file is readable // might be bug #3059806 Supporting running from CIFS/Samba shares $contents = false; $handle = @fopen($this->getSource(), 'r'); if ($handle !== false) { $contents = @fread($handle, 1); // reading 1 byte is enough to test @fclose($handle); } if ($contents === false) { $this->source_mtime = 0; PMA_fatalError( sprintf( function_exists('__') ? __('Existing configuration file (%s) is not readable.') : 'Existing configuration file (%s) is not readable.', $this->getSource() ) 1169 ); return false; } } return true; } 

El problema eran los permisos incorrectos para el directorio /etc/phpMyAdmin . El usuario del servidor web, apache, tenía los permisos adecuados para el directorio session.save_path , pero apache no pudo leer mi archivo config.inc.php. Cambiar el propietario de / etc / phpMyAdmin al usuario de apache y cambiar los permisos a 755 resolvió el problema.

Mirar la función checkConfigSource() en Config.class.php me llevó a creer que si el problema era acceder al archivo de configuración, entonces habría recibido el error 'Existing configuration file (%s) is not readable.' en lugar de Call to undefined function __() ¿Alguien sabe por qué ese no era el caso?

Este fue un problema / solución bastante básico, pero a menos que alguien sugiera lo contrario, creo que lo dejaré ya que este problema / solución exacta no se aborda en otras discusiones del Fatal error: Call to undefined function __() in /usr/share/phpMyAdmin/libraries/core.lib.php error al intentar iniciar phpMyAdmin después de la instalación.

Tenía el mismo mensaje de error de phpMyAdmin :: FastCGI enviado en stderr: “Mensaje de PHP: PHP Error fatal: llamada a la función no definida __ () en /usr/share/phpMyAdmin/libraries/core.lib.php en la línea 245” mientras leía encabezado de respuesta de upstream, cliente:

Solución que funcionaba en mi servidor Fedora 22 x86_64 usando nginx: cambiando el propietario y el identificador de grupo desde la raíz: apache en el archivo / var / lib / php / session
rootear: nginx
usando el comando sudo chown -Rfv root:nginx /var/lib/php/session .

Si phpmyadmin funcionaba bien y de repente deja de funcionar sin ningún motivo con un mensaje de error extraño e inútil, puede intentar eliminar sus sesiones de php.

 rm -rf /var/lib/php/sessions/* 

La ubicación exacta puede depender mucho del sistema operativo y la versión, y esto eliminará todas las sesiones activas, no solo las suyas, pero puede solucionar algunos problemas de “interrupción repentina de trabajo” cuando no ha cambiado nada y antes funcionaba bien.

Para mí fue un problema diferente. Le había otorgado 777 permisos a phpMyAdmin forlder. Cuando lo cambié a 755, funcionó bien.

Espero que esto ayude a alguien.

Error “La conexión se restableció”
Archivo: /usr/share/phpmyadmin/libraries/common.inc.php

buscar:

 $GLOBALS['PMA_Config'] = new PMA_Config(CONFIG_FILE);

reemplazar con:

 $GLOBALS['PMA_Config'] = new PMA_Config();