【问题标题】:Codeigniter Captcha not showing up imageCodeigniter 验证码未显示图像
【发布时间】:2020-11-10 03:13:19
【问题描述】:

我一直在为 codeigniter 使用验证码,我在我的电脑上工作正常,但不知何故,当我上传到服务器时它没有生成图像,我一直在尝试来自 stackoverflow 的其他帖子的建议,但它不起作用

我一直在检查以下点

  1. GD 已启用
  2. 我已经使用递归模式对资产目录执行 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/

-------------- 更新 06-04-2016 --------------- ------------------

我得到了另一个线索

在帮助程序 (captcha_helper) 中进行调试后,我将一些返回 False 更改为调试模式。它显示以下错误

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

我已将验证码目录更改为 chmod 777,但似乎不起作用。

我已经将所有权更改为 apache,我正在使用此脚本从网络检查所有权,但仍然无法正常工作?

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

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

【问题讨论】:

  • create_captcha() 函数中有 4 个地方返回 false。如果尚未设置图像路径/url(您的代码设置了这不是问题)。如果图像路径不是目录(我希望你已经创建了一个目录,否则这将是问题)。如果图像路径不可写(我怀疑这是您的问题 0755 表示您的用户可写但只能为其他用户读取/执行,请将权限更改为 0777 以解决此问题)。最后,如果没有安装 GD 库(您声称它已经安装,所以应该不是问题)。祝你好运:)
  • 你试过这个assets/files/captcha/
  • @mic :我一直在检查路径,创建目录,使用 chmod 666 使目录可写,GD 已经安装程序(我在 PHP 信息上看到),问题是什么?,这很混乱
  • @RejoanulAlam :我已经按照您的建议进行了更改,但没有影响

标签: codeigniter captcha


【解决方案1】:

你的 i img_path 是错误的。试试这个

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

CodeIgniter Captcha Helper Example - FormGet.com

【讨论】:

  • 嗨@abdulla,请看我上面的问题,我也改成了这个,但它不起作用
  • @abdulla,相对路径在包含中是危险的。原因和方法在这里解释:stackoverflow.com/questions/36577020/…
【解决方案2】:

因为这篇文章我找到了线索,这是因为 SELinux 在 Centos 7 上是活跃的。

https://blog.lysender.com/2015/07/centos-7-selinux-php-apache-cannot-writeaccess-file-no-matter-what/

【讨论】:

【解决方案3】:

是的。正是由于错误的图像路径,它显示了这个错误。在codeigniter中使用确切的路径和url就可以了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多