调用未定义的函数__()错误 - phpMyAdmin

时间:2014-01-20 20:38:55

标签: php 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。

解决问题的任何想法?

10 个答案:

答案 0 :(得分:34)

检查您的会话目录是否可由Web服务器进程写入。

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

<?php
phpinfo();
?>

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

来自类似线程的

More information

答案 1 :(得分:29)

我刚刚设置了CentOS 7并尝试了phpmyadmin并遇到了同样的问题。希望这有帮助

我为sessions目录设置了正确的权限并重新启动了apache,甚至禁用了SELinux但显示了相同的错误

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

sudo yum install php-mbstring

检查phpmyadmin的要求

答案 2 :(得分:8)

对于Debian用户:(我最终在这个帖子中作为Debian用户)我读了@naveen的答案,看来我没有安装php-mbstring,安装它解决了我的问题:

sudo apt-get install php-mbstring

答案 3 :(得分:2)

就像其他用户说的那样...... 我正在使用PHP7运行Debian 8并遇到了问题,所以只需安装;

sudo service apache2 restart

然后重新启动Apache服务;

display:flex

然后phpmyadmin运行正常。

答案 4 :(得分:1)

检查您的PHP扩展是否已加载。当mysql或mysqli扩展无法加载时,结果将是这个错误(这是非常令人困惑的)。要检查扩展是否正确加载,请查看PHP函数phpinfo()的输出 - 所有加载的扩展都列在那里。

答案 5 :(得分:1)

如果您出于某种原因使用其他用户,例如当有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将起作用。

答案 6 :(得分:1)

对我而言,错误发生在/usr/share/phpMyAdmin/libraries/sanitizing.lib.php

我在this advice之后增加了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再次运行。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

在我的情况下,使用 CentOS 7 下的 php-fpm ,这就是@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权限可以很好地工作。

答案 9 :(得分:0)

我在config.inc.php中解析错误后遇到了这个问题。不幸的是,phpMyAdmin在读取配置文件时设置了error_reporting(0)。打开library / Config.class.php,搜索$old_error_reporting = error_reporting(0);并将其替换为$old_error_reporting = error_reporting(E_ALL);以查看发生了什么。当然,出于安全原因,您以后应该还原此更改。