我在本地主机上使用Grégoire的PHP Captcha library,它正常工作,如创建图像和发送到浏览器。但是当相同的代码在远程服务器上时,Captcha Image不会显示在客户端。由于在两种情况下每个图像请求都响应大约20kB的数据,我确信正在下载图像。从它的外观来看,它似乎是图像的有效基础64。我注意到的唯一区别是,当记录base64字符串时,它通常较短,约为8kB,而localhost中的base64与实际图像一样多,约为20kB。 但据我所知,我不知道如何使用这些信息。任何指南?
代码片段:
$captcha = new Gregwar\Captcha\CaptchaBuilder;
$captcha->build(
Config::get('CAPTCHA_WIDTH'),
Config::get('CAPTCHA_HEIGHT')
);
header('Content-type: image/jpeg');
$captcha->output();
进一步信息:
我在Windows 7上使用了wamp,但是在远程ubuntu 14.04上分别安装了apache2,php5。
Localhost:apache 2.4.9,php 5.5.12
远程服务器:apache 2.4.7,php 5.5.9
在这两种情况下都不会产生任何错误。
来自localhost的工作base64:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPU ... iiigAooooAKKKKACiiigD//2Q==
通常大约20千字节长。
来自远程服务器的无法运行的base64:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA7Q1JFQVRPU ... I0vQ7A
通常大约8千字节长。
修改: 我已经修复了一个解决方法,但仍然不确定问题的原因。它在这里: 在registrationView.php中,我有一个标签,其中'src'属性设置为触发CaptchaBuilder代码的这个不存在的url。所以也许这种方法不适用于远程配置,因为连接延迟? 我做的是我用'ajax'请求替换'src'标签,WAITS为成功,然后加载base64data。如果有人能对这种怀疑发表自信的评论,希望我们能够得到答案..