View Issue Details

This bug affects 1 person(s).
 6
IDProjectCategoryView StatusLast Update
16116Bug reportsOtherpublic2020-06-25 15:20
ReporterMojon Assigned ToDenisChenu  
PrioritynoneSeverityminor 
Status assignedResolutionopen 
Product Version4.1.16 
Summary16116: Lack of freetype support : no CAPTCHA and no alert
DescriptionSmall problem with CAPTCHA

New Installation.
Installed this time by Installatron > hosting platform.
First survey, I added CAPTCHA usage.
However, I don't see the CAPTCHA field in the survey preview
See attachment

At php.info
GD Support: enabled
GD Version: bundled (2.1.0 compatible)
LimeSurvey Ver 4.1.15+200402


Update, LimeSurvey Ver 4.1.16, but still the same :(

Please see at
https://www.limesurvey.org/forum/design-issues/120768-captcha#196609
Additional InformationPlease see at
https://www.limesurvey.org/forum/design-issues/120768-captcha#196609
TagsNo tags attached.
Bug heat6
Complete LimeSurvey version number (& build)4.1.16+200407
I will donate to the project if issue is resolvedNo
BrowserIE, Opera, FF, Chrome
Database type & version5.7.27
Server OS (if known)Linux
Webserver software & version (if known)
PHP Version7.4.3

Relationships

related to 14772 assignedDenisChenu Development  Review default config.php when installing 

Users monitoring this issue

User List There are no users monitoring this issue.

Activities

Mojon

Mojon

2020-04-08 13:06

reporter  

survey_IE.png (15,451 bytes)   
survey_IE.png (15,451 bytes)   
survey.png (23,598 bytes)   
survey.png (23,598 bytes)   
Mojon

Mojon

2020-04-09 14:28

reporter   ~57056

Debug mode on.

Call to undefined function imagettfbbox()
Error.htm (16,214 bytes)   
<!DOCTYPE html PUBLIC
	"-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Error</title>

<style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style>
</head>

<body>
<div class="container">
	<h1>Error</h1>

	<p class="message">
		Call to undefined function imagettfbbox()	</p>

	<div class="source">
		<p class="file">/home/xxx/domains/survey.domain.com/public_html/application/extensions/captchaExtended/CaptchaExtendedAction.php(471)</p>
		<div class="code"><pre><span class="ln">459</span>         imagecolordeallocate($image,$backColor);
<span class="ln">460</span> 
<span class="ln">461</span>         if($this-&gt;transparent){
<span class="ln">462</span>             imagecolortransparent($image,$backColor);
<span class="ln">463</span>         }
<span class="ln">464</span> 
<span class="ln">465</span>         if($this-&gt;fontFile === null){
<span class="ln">466</span>             $this-&gt;fontFile = realname(Yii::app()-&gt;basePath.&quot;/../assets/fonts/font-src/lato-v11-latin-700.ttf&quot;);
<span class="ln">467</span>             
<span class="ln">468</span>         }
<span class="ln">469</span> 
<span class="ln">470</span>         $length = strlen($code);
<span class="error"><span class="ln error-ln">471</span>         $box = imagettfbbox(25,0,$this-&gt;fontFile,$code);
</span><span class="ln">472</span>         $w = $box[4] - $box[0] + $this-&gt;offset * ($length - 1);
<span class="ln">473</span>         $h = $box[1] - $box[5];
<span class="ln">474</span>         $scale = min(($this-&gt;width - $this-&gt;padding * 2) / $w,($this-&gt;height - $this-&gt;padding * 2) / $h);
<span class="ln">475</span>         $x = 10;
<span class="ln">476</span>         $y = round($this-&gt;height * 27 / 40);
<span class="ln">477</span> 
<span class="ln">478</span>         $r = (int)($this-&gt;foreColor % 0x1000000 / 0x10000);
<span class="ln">479</span>         $g = (int)($this-&gt;foreColor % 0x10000 / 0x100);
<span class="ln">480</span>         $b = $this-&gt;foreColor % 0x100;
<span class="ln">481</span>         $foreColor = imagecolorallocate($image, mt_rand($r-50,$r+50), mt_rand($g-50,$g+50),mt_rand($b-50,$b+50));
<span class="ln">482</span> 
<span class="ln">483</span>         for($i = 0; $i &lt; $length; ++$i){
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/application/extensions/captchaExtended/CaptchaExtendedAction.php(143): <strong>CaptchaExtendedAction</strong>-><strong>renderImage</strong>()				</div>

				<div class="code"><pre><span class="ln">138</span>                     &#039;hash1&#039;=&gt;$this-&gt;generateValidationHash($result),
<span class="ln">139</span>                     &#039;hash2&#039;=&gt;$this-&gt;generateValidationHashCI($result),
<span class="ln">140</span>                     &#039;url&#039;=&gt;$this-&gt;getController()-&gt;createUrl($this-&gt;getId(),array(&#039;v&#039; =&gt; uniqid())),
<span class="ln">141</span>                 ));
<span class="ln">142</span>             }else{
<span class="error"><span class="ln error-ln">143</span>                 $this-&gt;renderImage($this-&gt;getVerifyCode());
</span><span class="ln">144</span>             }
<span class="ln">145</span>         }
<span class="ln">146</span>         Yii::app()-&gt;end();
<span class="ln">147</span>     }
<span class="ln">148</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/actions/CAction.php(76): <strong>CaptchaExtendedAction</strong>-><strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         $method=new ReflectionMethod($this, &#039;run&#039;);
<span class="ln">73</span>         if($method-&gt;getNumberOfParameters()&gt;0)
<span class="ln">74</span>             return $this-&gt;runWithParamsInternal($this, $method, $params);
<span class="ln">75</span> 
<span class="error"><span class="ln error-ln">76</span>         $this-&gt;run();
</span><span class="ln">77</span>         return true;
<span class="ln">78</span>     }
<span class="ln">79</span> 
<span class="ln">80</span>     /**
<span class="ln">81</span>      * Executes a method of an object with the supplied named parameters.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/CController.php(308): <strong>CAction</strong>-><strong>runWithParams</strong>()				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/CController.php(286): <strong>CController</strong>-><strong>runAction</strong>()				</div>

				<div class="code"><pre><span class="ln">281</span>      * @see runAction
<span class="ln">282</span>      */
<span class="ln">283</span>     public function runActionWithFilters($action,$filters)
<span class="ln">284</span>     {
<span class="ln">285</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">286</span>             $this-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>()				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/CWebApplication.php(282): <strong>CController</strong>-><strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">277</span>         {
<span class="ln">278</span>             list($controller,$actionID)=$ca;
<span class="ln">279</span>             $oldController=$this-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_controller=$oldController;
<span class="ln">284</span>         }
<span class="ln">285</span>         else
<span class="ln">286</span>             throw new CHttpException(404,Yii::t(&#039;yii&#039;,&#039;Unable to resolve the request &quot;{route}&quot;.&#039;,
<span class="ln">287</span>                 array(&#039;{route}&#039;=&gt;$route===&#039;&#039;?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>()				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">137</span>                 $_GET[$name]=$value;
<span class="ln">138</span>         }
<span class="ln">139</span>         else
<span class="ln">140</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;runController($route);
</span><span class="ln">142</span>     }
<span class="ln">143</span> 
<span class="ln">144</span>     /**
<span class="ln">145</span>      * Registers the core application components.
<span class="ln">146</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-><strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>     public function run()
<span class="ln">181</span>     {
<span class="ln">182</span>         if($this-&gt;hasEventHandler(&#039;onBeginRequest&#039;))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,&#039;end&#039;),0,false);
<span class="error"><span class="ln error-ln">185</span>         $this-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler(&#039;onEndRequest&#039;))
<span class="ln">187</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">188</span>     }
<span class="ln">189</span> 
<span class="ln">190</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/xxx/domains/survey.domain.com/public_html/index.php(182): <strong>CApplication</strong>-><strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">177</span> require_once APPPATH . &#039;core/LSYii_Application&#039; . EXT;
<span class="ln">178</span> 
<span class="ln">179</span> $config = require_once(APPPATH . &#039;config/internal&#039; . EXT);
<span class="ln">180</span> 
<span class="ln">181</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">182</span> Yii::createApplication(&#039;LSYii_Application&#039;, $config)-&gt;run();
</span><span class="ln">183</span> 
<span class="ln">184</span> /* End of file index.php */
<span class="ln">185</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</table>
	</div>

	<div class="version">
		2020-04-09 12:15:59 Apache <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.22-dev	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>

</body>
</html>
Error.htm (16,214 bytes)   
DenisChenu

DenisChenu

2020-04-09 16:09

developer   ~57058

https://www.php.net/manual/en/function.imagettfbbox.php#refsect1-function.imagettfbbox-notes
Mojon

Mojon

2020-04-09 17:09

reporter   ~57060

I compiled freetype support for PHP 7.4

Work fine.
Thx for help
cdorin

cdorin

2020-04-09 22:29

manager   ~57065

Hello,
Works fine? SHall I close the bug report then? :)
DenisChenu

DenisChenu

2020-04-10 09:07

developer   ~57067

No :)

1. Must show an alert when install (optional or not ?)
2. Must show an alert (or disable) in survey settings
3. another place ?

Issue History

Date Modified Username Field Change
2020-04-08 13:06 Mojon New Issue
2020-04-08 13:06 Mojon File Added: survey_IE.png
2020-04-08 13:06 Mojon File Added: survey.png
2020-04-09 14:28 Mojon File Added: Error.htm
2020-04-09 14:28 Mojon Note Added: 57056
2020-04-09 16:09 DenisChenu Note Added: 57058
2020-04-09 17:09 Mojon Note Added: 57060
2020-04-09 22:29 cdorin Note Added: 57065
2020-04-10 09:06 DenisChenu Summary CAPTCHA => Lack of freetype support : no CAPTCHA and no alert
2020-04-10 09:06 DenisChenu Description Updated View Revisions
2020-04-10 09:06 DenisChenu Additional Information Updated View Revisions
2020-04-10 09:06 DenisChenu Assigned To => DenisChenu
2020-04-10 09:06 DenisChenu Status new => assigned
2020-04-10 09:07 DenisChenu Note Added: 57067
2020-06-25 15:20 DenisChenu Relationship added related to 14772