View Issue Details

This bug affects 1 person(s).
 6
IDProjectCategoryView StatusLast Update
13879Bug reportsSurvey participants (Tokens)public2018-07-24 13:53
Reporterefingdmi Assigned Toollehar  
PrioritynoneSeveritypartial_block 
Status closedResolutionno change required 
Product Version3.13.x 
Summary13879: Internal Server Error - Something is wrong with your random generator
Description

When creating "dummy participants" following error occurs: Internal Server Error - Something is wrong with your random generator
Also clicking on "generate tokens" after adding participants, I get a message that 0 tokens were created.

It seems like the random generator needs something what is not installed on my server, because it is working on my local Win10 (same DB, same PHP version, same Apache version)

Any ideas? Maybe some missing libraries or anything? Anything special that the random generator needs?

Thanks

Steps To Reproduce

Create survey
add dummy participants with tokens -> error
add participants -> add tokens -> 0 tokens created

TagsNo tags attached.
Attached Files
random_generator.png (9,852 bytes)   
random_generator.png (9,852 bytes)   
Bug heat6
Complete LimeSurvey version number (& build)3.13.2+180709
I will donate to the project if issue is resolvedNo
BrowserFF, Chrome, Edge
Database type & versionMS SQL Server 2016
Server OS (if known)Windows Server 2012 R2 64Bit
Webserver software & version (if known)Apache Apache 2.4.33 (64bit)
PHP VersionPHP 7.2.6 (64bit)

Users monitoring this issue

There are no users monitoring this issue.

Activities

ollehar

ollehar

2018-07-17 11:56

administrator   ~48518

Enable debug = 2 and try again, for more detailed error message.

efingdmi

efingdmi

2018-07-17 14:41

reporter   ~48521

Hi,
sorry I always forget about the debug mode.
I attached the output.

Thanks

Exception.html (18,097 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>Exception</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>Exception</h1>

	<p class="message">
		Something is wrong with your random generator.	</p>

	<div class="source">
		<p class="file">C:\Apache24\htdocs\limesurvey\application\controllers\admin\tokens.php(949)</p>
		<div class="code"><pre><span class="ln">937</span> 
<span class="ln">938</span>                 $token-&gt;firstname = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token-&gt;firstname);
<span class="ln">939</span>                 $token-&gt;lastname = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token-&gt;lastname);
<span class="ln">940</span>                 $token-&gt;email = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token-&gt;email);
<span class="ln">941</span> 
<span class="ln">942</span>                 $attempts = 0;
<span class="ln">943</span>                 do {
<span class="ln">944</span>                     $token-&gt;token = Token::generateRandomToken($iTokenLength);
<span class="ln">945</span>                     $attempts++;
<span class="ln">946</span>                 } while (isset($existingtokens[$token-&gt;token]) &amp;&amp; $attempts &lt; 50);
<span class="ln">947</span> 
<span class="ln">948</span>                 if ($attempts == 50) {
<span class="error"><span class="ln error-ln">949</span>                     throw new Exception('Something is wrong with your random generator.');
</span><span class="ln">950</span>                 }
<span class="ln">951</span> 
<span class="ln">952</span>                 $existingtokens[$token-&gt;token] = true;
<span class="ln">953</span>                 $token-&gt;save();
<span class="ln">954</span>                 $newDummyToken++;
<span class="ln">955</span>             }
<span class="ln">956</span>             $aData['thissurvey'] = getSurveyInfo($iSurveyId);
<span class="ln">957</span>             $aData['surveyid'] = $iSurveyId;
<span class="ln">958</span>             if (!$invalidtokencount) {
<span class="ln">959</span>                 $aData['success'] = true;
<span class="ln">960</span>                 Yii::app()-&gt;session['flashmessage'] = gT("New dummy participants were added.");
<span class="ln">961</span>                 //admin/tokens/sa/browse/surveyid/652779//
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace core collapsed">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>tokens</strong>-&gt;<strong>addDummies</strong>(681729, "add")				</div>

							</td>
		</tr>
						<tr class="trace core expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\actions\CAction.php(109): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(tokens, array("681729", "add"))				</div>

				<div class="code"><pre><span class="ln">104</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">105</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">106</span>             else
<span class="ln">107</span>                 return false;
<span class="ln">108</span>         }
<span class="error"><span class="ln error-ln">109</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">110</span>         return true;
<span class="ln">111</span>     }
<span class="ln">112</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\application\core\Survey_Common_Action.php(83): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(tokens,
 ReflectionMethod, array("surveyid" =&gt; "681729", "subaction" =&gt; 
"add", "sa" =&gt; "adddummies", "iSurveyId" =&gt; "681729", ...))				</div>

				<div class="code"><pre><span class="ln">78</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">79</span>         }
<span class="ln">80</span> 
<span class="ln">81</span>         // We're all good to go, let's execute it
<span class="ln">82</span>         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
<span class="error"><span class="ln error-ln">83</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">84</span>     }
<span class="ln">85</span> 
<span class="ln">86</span>     /**
<span class="ln">87</span>      * Some functions have different parameters, which are just an alias of the
<span class="ln">88</span>      * usual parameters we're getting in the url. This function just populates
</pre></div>			</td>
		</tr>
						<tr class="trace core expanded">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\CController.php(308): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "681729", "subaction" =&gt; "add", "sa" =&gt; "adddummies", "iSurveyId" =&gt; "681729", ...))				</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 expanded">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(tokens)				</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 expanded">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(tokens, array())				</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 app expanded">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\application\controllers\AdminController.php(158): <strong>CController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">153</span>                     $this-&gt;redirect(array('/admin/authentication/sa/login'));
<span class="ln">154</span>                 }
<span class="ln">155</span>             }
<span class="ln">156</span>         }
<span class="ln">157</span> 
<span class="error"><span class="ln error-ln">158</span>         return parent::run($action);
</span><span class="ln">159</span>     }
<span class="ln">160</span> 
<span class="ln">161</span>     /**
<span class="ln">162</span>      * Routes all the actions to their respective places
<span class="ln">163</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace core expanded">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("tokens")				</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('yii','Unable to resolve the request "{route}".',
<span class="ln">287</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core expanded">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\web\CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/tokens/sa/adddummies")				</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 expanded">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\framework\base\CApplication.php(185): <strong>CWebApplication</strong>-&gt;<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('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,'end'),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('onEndRequest'))
<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">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\Apache24\htdocs\limesurvey\index.php(194): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">189</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">190</span> 
<span class="ln">191</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">192</span> 
<span class="ln">193</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">194</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">195</span> 
<span class="ln">196</span> /* End of file index.php */
<span class="ln">197</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2018-07-17 12:38:52 Apache/2.4.33 (Win64) OpenSSL/1.1.0h PHP/7.2.6 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.19	</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>
Exception.html (18,097 bytes)   
DenisChenu

DenisChenu

2018-07-17 19:33

developer   ~48523

What is the token lenght ? (settings in the survey)

efingdmi

efingdmi

2018-07-18 09:24

reporter   ~48525

15

efingdmi

efingdmi

2018-07-24 13:42

reporter   ~48564

Hi all,
enabling the php openssl extension solved the problem

But still thank you :)

ollehar

ollehar

2018-07-24 13:53

administrator   ~48565

Great, closing this.

Issue History

Date Modified Username Field Change
2018-07-17 11:28 efingdmi New Issue
2018-07-17 11:29 efingdmi File Added: random_generator.png
2018-07-17 11:56 ollehar Note Added: 48518
2018-07-17 14:41 efingdmi File Added: Exception.html
2018-07-17 14:41 efingdmi Note Added: 48521
2018-07-17 19:33 DenisChenu Note Added: 48523
2018-07-18 09:24 efingdmi Note Added: 48525
2018-07-24 13:42 efingdmi Note Added: 48564
2018-07-24 13:53 ollehar Note Added: 48565
2018-07-24 13:53 ollehar Assigned To => ollehar
2018-07-24 13:53 ollehar Status new => closed
2018-07-24 13:53 ollehar Resolution open => no change required