部署到VPS服务器时代码点火器系统文件中的异常错误

时间:2017-11-15 23:43:22

标签: php codeigniter

我最近在WAMP本地服务器上使用代码点火器构建了我的站点,并在共享托管服务器(来自Namecheap)上对其进行了测试。然后我得到了VPS主机方案(来自iPage)并上传了文件并做了必要的配置。但是,当我尝试访问该网站时出现此错误:

遇到未捕获的异常

输入:错误

消息:调用未定义的函数ctype_digit()

文件名:/home/eastngco/public_html/system/core/Security.php

行号:600

问题是,可疑文件Security.php是一个代码点火器系统文件,我从未搞砸过(我写的所有内容都在应用程序文件夹中)。下面是Security.php中围绕该行的代码片段,导致错误:

/**
 * Get random bytes
 *
 * @param   int $length Output length
 * @return  string
 */
public function get_random_bytes($length)
{
    if (empty($length) OR ! ctype_digit((string) $length))
    {
        return FALSE;
    }

    if (function_exists('random_bytes'))
    {
        try
        {
            // The cast is required to avoid TypeError
            return random_bytes((int) $length);
        }
        catch (Exception $e)
        {
            // If random_bytes() can't do the job, we can't either ...
            // There's no point in using fallbacks.
            log_message('error', $e->getMessage());
            return FALSE;
        }
    }

    // Unfortunately, none of the following PRNGs is guaranteed to exist ...
    if (defined('MCRYPT_DEV_URANDOM') && ($output = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM)) !== FALSE)
    {
        return $output;
    }


    if (is_readable('/dev/urandom') && ($fp = fopen('/dev/urandom', 'rb')) !== FALSE)
    {
        // Try not to waste entropy ...
        is_php('5.4') && stream_set_chunk_size($fp, $length);
        $output = fread($fp, $length);
        fclose($fp);
        if ($output !== FALSE)
        {
            return $output;
        }
    }

    if (function_exists('openssl_random_pseudo_bytes'))
    {
        return openssl_random_pseudo_bytes($length);
    }

    return FALSE;
}

我不知道随机字节或ctype_digit()是什么意思!

我在网上做了一些挖掘,看看是否会出现类似的问题(及其解决方案),但没有做到。我需要帮助解决这个问题。 如果它意味着什么,我的托管计划附带的PHP版本是版本7,我有SSL。

2 个答案:

答案 0 :(得分:0)

您的提供商可能已明确禁用了这些类型的功能。默认情况下应该启用。尝试联系您的提供商以获得一些支持,以启用这些,或者在没有关闭该标志的情况下重新安装PHP。

http://us2.php.net/manual/en/ctype.installation.php

此外,您可以尝试检查phpinfo()页面以确认是否启用了ctypes。他们会将其关闭似乎很奇怪,所以这有助于弄清楚这是否是问题的一部分。

答案 1 :(得分:0)

Ipage 有一个支持页面来启用 ctype 扩展,请阅读这篇文章,使用代码点火器和 PHP:7.4.10,我收到此错误消息:调用未定义的函数 ctype_digit()。 在 Ipage 中启用此扩展在我的情况下问题已解决。 文章: https://www.ipage.com/help/article/how-to-enable-ctype-so-extensions-in-php-ini