View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
14055 | Bug reports | Central participant database | public | 2018-09-13 20:55 | 2018-11-08 18:53 |
Reporter | terryaulenbach | Assigned To | |||
Priority | urgent | Severity | partial_block | ||
Status | closed | Resolution | reopened | ||
Summary | 14055: 3.14x - can't generate tokens | ||||
Description | With PHP debug mode on... If I try to create dummy participants I get the erros in the attached HTML file. | ||||
Steps To Reproduce | First situation:
Second situation:
| ||||
Tags | No tags attached. | ||||
Attached Files | Random Generator Exception.html (18,104 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" class="gr__surveys-dev_acadiau_ca" 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 data-gr-c-s-loaded="true"> <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\limesurveydev\application\controllers\admin\tokens.php(949)</p> <div class="code"><pre><span class="ln">937</span> <span class="ln">938</span> $token->firstname = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token->firstname); <span class="ln">939</span> $token->lastname = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token->lastname); <span class="ln">940</span> $token->email = str_replace('{TOKEN_COUNTER}', $newDummyToken, $token->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->token = Token::generateRandomToken($iTokenLength); <span class="ln">945</span> $attempts++; <span class="ln">946</span> } while (isset($existingtokens[$token->token]) && $attempts < 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->token] = true; <span class="ln">953</span> $token->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()->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"> unknown(0): <strong>tokens</strong>-><strong>addDummies</strong>(962758, "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> C:\Apache24\limesurveydev\framework\web\actions\CAction.php(109): <strong>ReflectionMethod</strong>-><strong>invokeArgs</strong>(tokens, array(962758, "add")) </div> <div class="code"><pre><span class="ln">104</span> elseif($param->isDefaultValueAvailable()) <span class="ln">105</span> $ps[]=$param->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->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> C:\Apache24\limesurveydev\application\core\Survey_Common_Action.php(83): <strong>CAction</strong>-><strong>runWithParamsInternal</strong>(tokens, ReflectionMethod, array("surveyid" => 962758, "subaction" => "add", "sa" => "adddummies", "iSurveyId" => 962758, ...)) </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> C:\Apache24\limesurveydev\framework\web\CController.php(308): <strong>Survey_Common_Action</strong>-><strong>runWithParams</strong>(array("surveyid" => 962758, "subaction" => "add", "sa" => "adddummies", "iSurveyId" => 962758, ...)) </div> <div class="code"><pre><span class="ln">303</span> { <span class="ln">304</span> $priorAction=$this->_action; <span class="ln">305</span> $this->_action=$action; <span class="ln">306</span> if($this->beforeAction($action)) <span class="ln">307</span> { <span class="error"><span class="ln error-ln">308</span> if($action->runWithParams($this->getActionParams())===false) </span><span class="ln">309</span> $this->invalidActionParams($action); <span class="ln">310</span> else <span class="ln">311</span> $this->afterAction($action); <span class="ln">312</span> } <span class="ln">313</span> $this->_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> C:\Apache24\limesurveydev\framework\web\CController.php(286): <strong>CController</strong>-><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->runAction($action); </span><span class="ln">287</span> else <span class="ln">288</span> { <span class="ln">289</span> $priorAction=$this->_action; <span class="ln">290</span> $this->_action=$action; <span class="ln">291</span> CFilterChain::create($this,$action,$filters)->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> C:\Apache24\limesurveydev\framework\web\CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>(tokens, array()) </div> <div class="code"><pre><span class="ln">260</span> { <span class="ln">261</span> if(($parent=$this->getModule())===null) <span class="ln">262</span> $parent=Yii::app(); <span class="ln">263</span> if($parent->beforeControllerAction($this,$action)) <span class="ln">264</span> { <span class="error"><span class="ln error-ln">265</span> $this->runActionWithFilters($action,$this->filters()); </span><span class="ln">266</span> $parent->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->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> C:\Apache24\limesurveydev\application\controllers\AdminController.php(158): <strong>CController</strong>-><strong>run</strong>("tokens") </div> <div class="code"><pre><span class="ln">153</span> $this->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> C:\Apache24\limesurveydev\framework\web\CWebApplication.php(282): <strong>AdminController</strong>-><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->_controller; <span class="ln">280</span> $this->_controller=$controller; <span class="ln">281</span> $controller->init(); <span class="error"><span class="ln error-ln">282</span> $controller->run($actionID); </span><span class="ln">283</span> $this->_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}'=>$route===''?$this->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> C:\Apache24\limesurveydev\framework\web\CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>("admin/tokens/sa/adddummies") </div> <div class="code"><pre><span class="ln">136</span> foreach(array_splice($this->catchAllRequest,1) as $name=>$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->getUrlManager()->parseUrl($this->getRequest()); <span class="error"><span class="ln error-ln">141</span> $this->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> C:\Apache24\limesurveydev\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->hasEventHandler('onBeginRequest')) <span class="ln">183</span> $this->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->processRequest(); </span><span class="ln">186</span> if($this->hasEventHandler('onEndRequest')) <span class="ln">187</span> $this->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> C:\Apache24\limesurveydev\index.php(194): <strong>CApplication</strong>-><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)->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-09-12 15:29:11 Apache/2.4.33 (Win64) OpenSSL/1.1.0h PHP/7.2.7 <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> | ||||
Bug heat | 16 | ||||
Complete LimeSurvey version number (& build) | 3.14.7+180827 | ||||
I will donate to the project if issue is resolved | No | ||||
Browser | various browsers | ||||
Database type & version | PostgreSQL 9.6.5 (win32) - but apparently the 64-bit version | ||||
Server OS (if known) | Windows Server 2012 R2 Standard Edition | ||||
Webserver software & version (if known) | Apache 2.4.33 (Win64) | ||||
PHP Version | 7.2.7 (x64) | ||||
Token generator works as expected using the latest LimeSurvey version on my local installation and also on hosted installation. I'm using Linux OS, so it may take some additional effort to make it work on Windows Server. Also you can try to upgrade to the latest version of LimeSurvey. |
|
This mean : Something is wrong with Windows Server 2012 R2 Standard Edition random generator … :D |
|
Why should Windows 2012 R2 be the issue? Terry should use PHP 7.1.X. Mcrypt was deprecated under PHP 7.1, but is still there. BTW: Against what PHP version is LimeSurvey tested during daily development? PHP is now proposing LibSodium |
|
Just a follow up: LimeSurvey uses Yii to generate tokens. if(function_exists('openssl_random_pseudo_bytes')) https://github.com/LimeSurvey/LimeSurvey/blob/master/framework/base/CSecurityManager.php#L391 Recommendation for LimeSurvey 3.X under PHP 7.2 for Windows is to activate OpenSSL extension. |
|
Thanks for the comments and suggestions. Enabling php_openssl.dll solved the problem. Terry |
|
Must update manual + must add it in installer maybe |
|
We cannot generate tokens in LS version 3.14.8+180829 (SLES 12). Attempt to generate tokens gives no error message and ends with displaying the list of surveys. |
|
Still impossible to generate tokens in LS version 3.14.9+180917. |
|
rbaier, you're on SLES12. |
|
@jelo, rbaier and my installation runs with PHP 7.07. |
|
@jelo, PHP version is 7.0.7 |
|
@rbaier: If you can add Dummy Participants, than your issue is not scope of this bugticket. |
|
Ticket can be closed, but a warning for php 7.2 under windows will be helpful, when OpenSSL is not available. |
|
@jelo, The bug "14081: Save button on the "Add participants" window not working." has been resolved. We have tried out the two patched files and it worked. But the issue "can't generate tokens" by using the "Generate tokens" button is still unresolved, also in LS Version 3.14.10+180924 |
|
@rbaier We would need the php version as well as if openssl, repectively libsodium is available. |
|
@jelo daily developement is on each developers machine with a slightly different set of software, but mostly nginx + mysql + php > 7 |
|
|
|
|
|
Issue solved, tokens can be generated now. |
|
Reopening caused by different issue. We should consider adding the checkroutines of environment of the installer to the application it self. |
|
@jelo : maybe in feature request ? It's a good idea :) |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2018-09-13 20:55 | terryaulenbach | New Issue | |
2018-09-13 20:55 | terryaulenbach | File Added: Random Generator Exception.html | |
2018-09-14 11:45 |
|
Sticky Issue | No => Yes |
2018-09-14 18:15 |
|
Assigned To | => dominikvitt |
2018-09-14 18:15 |
|
Status | new => resolved |
2018-09-14 18:15 |
|
Resolution | open => unable to reproduce |
2018-09-14 18:15 |
|
Note Added: 49049 | |
2018-09-14 19:26 | DenisChenu | Note Added: 49051 | |
2018-09-14 22:11 | jelo | Note Added: 49052 | |
2018-09-14 22:38 | jelo | Note Added: 49053 | |
2018-09-17 15:47 |
|
Sticky Issue | Yes => No |
2018-09-17 17:55 | terryaulenbach | Note Added: 49064 | |
2018-09-17 18:55 | DenisChenu | Assigned To | dominikvitt => |
2018-09-17 18:55 | DenisChenu | Status | resolved => feedback |
2018-09-17 18:55 | DenisChenu | Resolution | unable to reproduce => reopened |
2018-09-17 18:55 | DenisChenu | Note Added: 49067 | |
2018-09-18 10:44 | rbaier | Note Added: 49071 | |
2018-09-18 12:46 | rbaier | Note Added: 49072 | |
2018-09-18 17:51 | jelo | Note Added: 49076 | |
2018-09-19 09:10 | c_schmitz | Assigned To | => markusfluer |
2018-09-19 09:10 | c_schmitz | Status | feedback => assigned |
2018-09-19 09:10 | c_schmitz | Priority | none => urgent |
2018-09-19 14:38 | Flups22 | Issue Monitored: Flups22 | |
2018-09-19 14:42 | Flups22 | Note Added: 49089 | |
2018-09-19 15:35 | rbaier | Note Added: 49091 | |
2018-09-20 00:26 | jelo | Note Added: 49096 | |
2018-09-20 00:28 | jelo | Note Added: 49097 | |
2018-09-26 11:49 | rbaier | Note Added: 49130 | |
2018-09-26 12:18 |
|
Note Added: 49131 | |
2018-09-26 12:18 |
|
Note Edited: 49131 | |
2018-09-26 12:20 |
|
Note Added: 49132 | |
2018-09-26 13:51 | jelo | Note Added: 49136 | |
2018-09-26 14:14 | rbaier | Note Added: 49138 | |
2018-10-01 15:14 | rbaier | Note Added: 49205 | |
2018-10-02 14:11 | jelo | Status | assigned => closed |
2018-10-02 14:11 | jelo | Note Added: 49214 | |
2018-11-08 15:28 | Flups22 | Issue End Monitor: Flups22 | |
2018-11-08 15:28 | Flups22 | Issue Monitored: Flups22 | |
2018-11-08 18:53 | DenisChenu | Note Added: 49585 | |
2021-08-03 05:19 | guest | Bug heat | 14 => 16 |