调用未定义功能__()错误-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。

使用

解决问题的想法?

检查您的会话目录是否由WebServer流程写作。

最好的方法是创建自己的phpinfo文件;在任何Web访问的文件夹中,创建一个文件(您可以调用test.php或phpinfo.php或您想要的任何内容),其中包含以下内容:

<?php
phpinfo();
?>

在您的浏览器中打开该文件(http://localhost/test.php或类似),并查找行session.save_path。那是您的会话文件夹;确保权限合适,看看是否有帮助。

来自类似线程的更多信息。

我刚刚设置了CentOS 7并尝试了PhpMyAdmin,并且存在相同的问题。希望这有帮助

我将正确的权限设置为会话目录和重新启动的Apache,甚至是禁用的Selinux,但显示了相同的错误

我没有安装php -mbstring-一旦我这样做,它就可以了

sudo yum install php-mbstring

检查phpmyadmin的要求

for debian用户:(我以debian用户的身份进入了这个线程)我读了@naveen的答案,看来我没有 php-mbstring 已安装,安装它解决了我的问题:

sudo apt-get install php-mbstring

(安装 php-mbstring ,不要忘记重新启动apache:)

sudo systemctl restart apache2

在我的情况下,使用 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流程中没有使用任何人,则将/var/lib/php/session的777许可设置为良好。

几乎就像其他用户所说的...我正在使用PHP7运行Debian 8,然后遇到问题,所以只需安装;

sudo apt-get install php7.0-mbstring

然后重新启动Apache服务;

sudo service apache2 restart

,然后phpmyadmin运行良好。

检查您的PHP扩展是否已加载。当MySQL或MySQLI扩展未能加载时,结果将正是此错误(这很令人困惑)。要检查您的扩展名是否正确加载,请查看PHP函数PHPINFO()的输出 - 所有加载的扩展名都在此处列出。

如果由于某种原因使用了其他用户,例如当具有httpd-itk(RHEL/CENTOS/FEDORA)或apache2-mpm-itk(Debian/Ubuntu)时,您的主要用户不是apachewww-data,然后进行:

sudo usermod -a -G apache youruser

sudo usermod -a -G www-data youruser

根据您的分布,然后phpmyadmin将起作用。

对我来说,错误是在/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

我注意到我以某种方式丢失了 php-getText debian软件包,但是安装了它后,PhpMyAdmin再次工作。

在我的情况下,此错误是间歇性的,我已经安装了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登录,一切都按预期工作。

我在config.inc.php中的解析错误后遇到了这一点。不幸的是,phpmyadmin在阅读配置文件时设置了error_reporting(0)。打开库/config.class.php,搜索$old_error_reporting = error_reporting(0);并将其替换为$old_error_reporting = error_reporting(E_ALL);以查看正在发生的事情。当然,出于安全原因,您应该以后再恢复此更改。

最新更新