Подтвердить что ты не робот

Вызов функции undefined __() - phpMyAdmin

Когда я хочу запустить phpMyAdmin в моем браузере, это покажет мне эту ошибку:

Fatal error: Call to undefined function __() in /usr/share/phpMyAdmin/libraries/core.lib.php on line 229
    Call Stack
    #   Time    Memory  Function    Location
    1   0.0010  344984  {main}( )   ../index.php:0
    2   0.0026  502720  require_once( '/usr/share/phpMyAdmin/libraries/common.inc.php' )    ../index.php:12
    3   0.0285  3836408 require( '/usr/share/phpMyAdmin/libraries/session.inc.php' )    ../common.inc.php:344
    4   0.0288  3846488 PMA_fatalError( )   ../session.inc.php:97

Я использую fedora 17 с PHP 5.5.7.

Любая идея для решения проблемы?

4b9b3361

Ответ 1

Убедитесь, что ваш каталог сеанса доступен для записи в процессе веб-сервера.

Лучший способ сделать это - создать свой собственный файл phpinfo; в любой доступной в Интернете папке создайте файл (вы можете называть его test.php или phpinfo.php или что угодно) со следующим содержимым:

<?php
phpinfo();
?>

Откройте этот файл в своем браузере (http://localhost/test.php или аналогичный) и найдите строку session.save_path. Это ваша папка сеанса; убедитесь, что разрешения подходят и посмотрите, помогает ли это.

Дополнительная информация из аналогичной темы.

Ответ 2

Я только что установил CentOS 7 и попробовал phpmyadmin и имел ту же проблему. Надеюсь, что это поможет

Я установил правильные разрешения для каталога сессий и перезапустил apache, даже отключил SELinux, но была показана ту же ошибку

У меня не было установлено php-mbstring - как только я это сделал, он работал

sudo yum install php-mbstring

Проверьте требования к phpmyadmin

Ответ 3

Для пользователей Debian: (я оказался в этом потоке как пользователь Debian) Я прочитал ответ @naveen, и оказалось, что у меня не было установлен php-mbstring, установка его решила мою проблему:

sudo apt-get install php-mbstring

Ответ 4

Почти так же, как говорили другие пользователи... Я запускаю Debian 8 с PHP7 и столкнулся с проблемой, поэтому просто устанавливаю;

sudo apt-get install php7.0-mbstring

Затем следует перезапустить службу Apache;

sudo service apache2 restart

И тогда phpmyadmin побежал нормально.

Ответ 5

Проверьте, загружены ли ваши расширения PHP. Когда расширения mysql или mysqli не загружаются, результатом будет именно эта ошибка (что довольно запутывает). Чтобы проверить правильность загрузки ваших расширений, просмотрите вывод функции PHP phpinfo() - там перечислены все загруженные расширения.

Ответ 6

Если вы используете другого пользователя по какой-либо причине, например. при использовании httpd-itk (RHEL/CentOS/Fedora) или apache2-mpm-itk (Debian/Ubuntu), а ваш основной пользователь не apache или www-data, тогда выполните:

sudo usermod -a -G apache youruser

или

sudo usermod -a -G www-data youruser

в зависимости от вашего дистрибутива, тогда будет работать phpMyAdmin.

Ответ 7

Для меня ошибка была в /usr/share/phpMyAdmin/libraries/sanitizing.lib.php.

Я увеличил отчет об ошибках php после этот совет и прокомментировал строку нарушения в sanitizing.lib.php, предварительно добавив //.

Тогда ошибка была более описательной: Fatal error: require_once(): Failed opening required '/usr/share/php/php-gettext/gettext.inc' (include_path='.') in /usr/share/phpmyadmin/libraries/common.inc.php on line 477

Я заметил, что я как-то потерял debian-пакет php-gettext, но после его установки phpMyAdmin снова работал.

Ответ 8

В моем случае эта ошибка была неустойчивой, и я установил phpMyAdmin и работал в течение многих лет. Читая ответы здесь, казалось, что ошибка может иметь отношение к сеансам.

В Ubuntu 16.04 сессии PHP находятся в: /var/lib/php/sessions и выглядят так:

$ sudo ls -al /var/lib/php/sessions/
total 128
drwx-wx-wt 2 root     root     73728 Mar  4 14:09 .
drwxr-xr-x 4 root     root      4096 Mar  8  2017 ..
-rw------- 1 www-data www-data    67 Mar  4 14:05 sess_dvg6vo1k1s1c0353rjk09g9vu1
-rw------- 1 www-data www-data    67 Mar  4 13:49 sess_e4ha0gl4f7gukku1o2uc4h5rs2
-rw------- 1 www-data www-data    67 Mar  4 14:05 sess_qhbve6k4a7svu6pk0lk568jgt0
-rw------- 1 www-data www-data    67 Mar  4 13:49 sess_sh48e898i7ad14oidsph08in10
-rw------- 1 www-data www-data 30044 Mar  4 14:04 sess_uvumc2341dvtfikl27kpile46pmfbon1

(Этот последний в списке выглядел "смешным" для меня.)

Сначала я попытался перезапустить apache2 но сеансы, видимо, пережили это. Поэтому я просто удалил их. (Не знаю другого способа их очистки.) После обновления браузера отобразилось имя входа phpMyAdmin, и все работает как положено.

Ответ 9

В моем случае, используя php-fpm под CentOS 7, это была причина, на которую указал @Issac, и которая была решена с помощью:

mkdir -p /var/lib/php/session
chown -R apache:apache /var/lib/php

Тогда решено.

Просто создайте папку сеанса, я думаю, что это прямое решение может работать в этом конкретном случае.

ВНИМАНИЕ: Перед тем, как сделать это, обязательно проверьте, существует ли папка /var/lib/php, и проверьте, какой пользователь используется для процесса php-fpm. Если вы никого не используете для процесса php-fpm, установите разрешение 777 для /var/lib/php/session.

Ответ 10

Я столкнулся с этим после ошибки разбора в config.inc.php. К сожалению, phpMyAdmin устанавливает error_reporting(0) при чтении файла конфигурации. Откройте библиотеки /Config.class.php, найдите $old_error_reporting = error_reporting(0); и замените его на $old_error_reporting = error_reporting(E_ALL); чтобы увидеть, что происходит. Конечно, вы должны отменить это изменение позже по соображениям безопасности.