Codeigniter验证码未显示图像

lf3rwulv  于 2022-12-06  发布在  其他
关注(0)|答案(4)|浏览(131)

我一直在使用codeigniter的验证码我在我的电脑上工作得很好,但不知何故,当我上传到服务器时,它不生成图像,我一直在尝试从stackoverflow的其他帖子的建议,但它不工作
我已经检查过了

  1. GD已启用
    1.我已经用递归模式对资产目录执行了chmod 755
    请在下面找到我的控制器代码
public function captcha_config() {
                $this->load->helper(array('captcha','form'));
                $vals = array(
                                'img_path' => '/var/www/html/assets/files/captcha/',
                                'img_url' => base_url().'assets/files/captcha/',
                                'img_width' => 150,
                                'img_height' => 30,
                                'expiration' => 7200
                        );
                        $cap = create_captcha($vals);
                        $this->session->set_userdata('capt',md5($cap['word']));
                        $image = $cap['image'];

                        //$data['captcha_img'] = $cap['image'];

                        //return $image;
                        var_dump($cap); //it shown bool(false)
        }

结果是

bool(false)

我一直在把下面的路径改变成这样,但也没有奏效。

./assets/files/captcha/

2016年4月6日更新------------------------------------------
我还有一条线索
当我在helper(captcha_helper)中进行调试后,我将一些返回值False更改为调试模式。它显示以下错误

Message: imagejpeg(/var/www/html/assets/files/captcha/1465012057.5767.jpg): failed to open stream: Permission denied

我已经做了改变captcha目录是chmod 777,但它似乎不工作。
我已经将所有权更改为Apache,我正在使用此脚本从Web检查所有权,但仍然不起作用?

<?php echo exec('whoami'); ?>

为什么验证码无法写入该目录?

bcs8qyzn

bcs8qyzn1#

你的i img_path不对,用这个试试

'img_path' => './assets/files/captcha/',

CodeIgniter Captcha Helper Example - FormGet.com

g6baxovj

g6baxovj3#

是的。正是由于错误的图像路径,它显示这个错误。使用准确的路径和网址在codeigniter它的罚款。

'img_path'      => APPPATH.'../assets',
 'img_url'       => base_url().'/assets',
uklbhaso

uklbhaso4#

首先测试SELinux是否处于活动状态:
$状态
如果输出是这样一些:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

然后暂时禁用它:
$允许使用sudo setenforce
尝试生成一个新的验证码。如果它工作的原因是一个SELinux权限问题。
再次启用SELinux:
$sudo setenforce强制执行
并将读/写策略应用于验证码目标目录,在您的示例中为“/var/www/html/assets/files/captcha/”
我的意思是说,如果你不想让别人知道你的名字,你可以把你的名字写下来,这样你就可以把你的名字写下来。
再次测试。

相关问题