当我想在浏览器上运行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)时,您的主要用户不是apache
或www-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);
以查看正在发生的事情。当然,出于安全原因,您应该以后再恢复此更改。