【发布时间】:2020-11-10 03:13:19
【问题描述】:
我一直在为 codeigniter 使用验证码,我在我的电脑上工作正常,但不知何故,当我上传到服务器时它没有生成图像,我一直在尝试来自 stackoverflow 的其他帖子的建议,但它不起作用
我一直在检查以下点
- GD 已启用
- 我已经使用递归模式对资产目录执行 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