Вызов функции 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.
Любая идея для решения проблемы?
Ответы
Ответ 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);
чтобы увидеть, что происходит. Конечно, вы должны отменить это изменение позже по соображениям безопасности.