【问题标题】:PHP error undefined function crypt_random_string with phpmyadmin, apache2, php5.3PHP错误未定义函数crypt_random_string与phpmyadmin,apache2,php5.3
【发布时间】:2017-04-04 00:25:48
【问题描述】:

我的服务器上运行着 phpMyAdmin,并且能够连接到设置页面。但是,当我去添加服务器时,它似乎已保存,但现在加载概述页面时什么也没有显示,并且 error.log 具有以下内容:

[Tue Apr 04 00:15:16 2017] [error] [client OMITTED] PHP Fatal error:  Call to undefined function crypt_random_string() in /usr/share/phpMyAdmin/setup/lib/index.lib.php on line 333, referer: https://OMITTED/phpmyadmin/setup/index.php

我相信这发生在它试图保存服务器身份验证密码时,但对于我来说,我无法弄清楚我必须安装什么。我正在运行 centos6.8、apache 2.2.15、php 5.3.3 和 yum 告诉我 phpMyAdmin 是 4.0

编辑: 我的会话路径是 /var/lib/php/session,并且具有以下权限(和会话文件):

[root@host php]# ls -ltr session/
total 8
-rw------- 1 apache apache 8021 Apr  4 00:15 sess_10h5if6dcctfhucej78678322lkhohlh
[root@host php]# ls -ltr
total 4
drwxrwx--- 2 root apache 4096 Apr  4 00:00 session
[root@host php]#pwd
/var/lib/php

我还阅读了有关引用路径的评论,但它不是 100% 有用,因为我不知道包含此函数的库,所以我不确定我试图找到什么文件。 /usr/share/phpMyAdmin 是虚拟主机文档根目录,而 /usr/share/phpMyAdmin/setup/lib/index.lib.php 位于该绝对路径中,并且是引发错误的脚本。但是我看不到它应该在哪里加载这个函数

编辑2: 阅读有关引用问题的更多信息,我确实安装了 mbstring:

[root@host php]# yum list installed | grep php
php.x86_64                         5.3.3-48.el6_8              @updates
php-bcmath.x86_64                  5.3.3-48.el6_8              @updates
php-cli.x86_64                     5.3.3-48.el6_8              @updates
php-common.x86_64                  5.3.3-48.el6_8              @updates
php-gd.x86_64                      5.3.3-48.el6_8              @updates
php-mbstring.x86_64                5.3.3-48.el6_8              @updates
php-mcrypt.x86_64                  5.3.3-4.el6                 @epel
php-mysql.x86_64                   5.3.3-48.el6_8              @updates
php-pdo.x86_64                     5.3.3-48.el6_8              @updates
php-php-gettext.noarch             1.0.11-12.el6               @epel
php-process.x86_64                 5.3.3-48.el6_8              @updates
php-tcpdf.noarch                   6.2.11-1.el6                @epel
php-tcpdf-dejavu-sans-fonts.noarch 6.2.11-1.el6                @epel
php-tidy.x86_64                    5.3.3-48.el6_8              @updates
php-xml.x86_64                     5.3.3-48.el6_8              @updates
phpMyAdmin.noarch                  4.0.10.17-2.el6             @epel

【问题讨论】:

  • 调用未定义函数crypt_random_string()。它不在这里/usr/share/phpMyAdmin/setup/lib/index.lib.php,如果那是相对路径,那将是https://OMITTED/phpmyadmin/setup/usr/share/phpMyAdmin/setup/lib/index.lib.php。如果setup 是同一个文件夹,则使用lib/index.lib.php 作为相对路径。
  • @RobertRocha 谢谢你,但我之前读过那个答案并检查过,权限看起来不错,并且在那里为会话编写了一个文件。我编辑了答案以显示权限
  • @PHPglue index.lib.php 是引发错误的脚本,在第 333 行我可以看到对 crypt 函数的调用。问题是我不知道应该包括什么,所以不确定它是否被错误地引用。

标签: php apache phpmyadmin


【解决方案1】:

所以我在要求行中进行了更多挖掘,一切看起来都是正确的。然后我在 /var/lip/php/sessions 中删除了我的会话,并能够在 /setup 上加载概述页面。我重新创建了服务器,这次使用 HTTP 身份验证而不是 cookie(因为 index.php 文件中的第 333 行仅在服务器配置了 cookie 配置时才运行)并且它有效!

我确实必须改变 /usr/share/phpMyAdmin/setup/config.php 第 15 行

来自

require_once './lib/ConfigGenerator.class.php';

require_once './setup/lib/ConfigGenerator.class.php';

正确下载配置文件,但是一旦我得到它并放入 /etc/phpMyAdmin,服务器提示登录,我就可以连接了。并不能真正解决缺少功能的问题,但对于我的用例来说已经足够解决了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2017-01-06
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多