文件不会退出或找到

时间:2015-10-07 17:49:22

标签: php codeigniter captcha

我在项目中实施验证码。我正在使用codeigniter框架。在captcha_helper.php文件中的代码

$use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE;

返回false。因为file_exists($font_path)正在返回 false 。 我通过了

$img_path = '../../captcha/';
        $img_url = base_url() . 'captcha/';
        $font_path = base_url(). 'captcha/font/impact.ttf';

$captch = array(
            'word' => '',
            'img_path' => $img_path,
            'img_url' => $img_url,
            'font_path' => $font_path,
            'img_width' => '200',
            'img_height' => '50',
            'expiration' => '300'
        );
 $cap = create_captcha($captch);

现在,当我回显$font_path并在浏览器中复制并粘贴相同的URL时,提示字体文件是下载意味着路径正确。那么,为什么file_exists($font_path)返回 false 。 我尽我所能无法弄明白。请帮助我,并原谅我犯下的愚蠢错误。

2 个答案:

答案 0 :(得分:2)

根据PHP manual,file_exists接受文件名作为参数:文件或目录的路径,而不是它的URL。它不使用HTTP请求访问文件。我打赌file_exists('/captcha/font/impact.ttf')会回归真实的!

答案 1 :(得分:2)

尝试:

$font_path = realpath($image_path . 'font/impact.ttf');

问题是base_url()会返回一个网址,您需要使用完整路径查看本地文件系统(例如/home/yoursite/public_html/captcha/font/impact.ttf