View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 09007 | Bug reports | LimeSurvey Website | public | 2014-04-30 16:13 | 2014-05-02 15:10 |
| Reporter | zewood | Assigned To | c_schmitz | ||
| Priority | high | Severity | block | ||
| Status | closed | Resolution | fixed | ||
| Product Version | 2.05+ | ||||
| Fixed in Version | 2.05+ | ||||
| Summary | 09007: There is a crash when an user wants to create a new survey | ||||
| Description | Hello, /var/www/limesurvey/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php(1898) 1886 Namespace.Directive => Value But, for an admin user there is no crash !!! | ||||
| Tags | No tags attached. | ||||
| Attached Files | PHP warning.htm (34,747 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>PHP warning</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>PHP warning</h1>
<p class="message">
Invalid argument supplied for foreach() </p>
<div class="source">
<p class="file">/var/www/limesurvey/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php(1898)</p>
<div class="code"><pre><span class="ln">1886</span> * Namespace.Directive => Value
<span class="ln">1887</span> * @param $config_array Configuration associative array
<span class="ln">1888</span> */
<span class="ln">1889</span> public function loadArray($config_array) {
<span class="ln">1890</span> if ($this->isFinalized('Cannot load directives after finalization')) return;
<span class="ln">1891</span> foreach ($config_array as $key => $value) {
<span class="ln">1892</span> $key = str_replace('_', '.', $key);
<span class="ln">1893</span> if (strpos($key, '.') !== false) {
<span class="ln">1894</span> $this->set($key, $value);
<span class="ln">1895</span> } else {
<span class="ln">1896</span> $namespace = $key;
<span class="ln">1897</span> $namespace_values = $value;
<span class="error"><span class="ln error-ln">1898</span> foreach ($namespace_values as $directive => $value) {
</span><span class="ln">1899</span> $this->set($namespace .'.'. $directive, $value);
<span class="ln">1900</span> }
<span class="ln">1901</span> }
<span class="ln">1902</span> }
<span class="ln">1903</span> }
<span class="ln">1904</span>
<span class="ln">1905</span> /**
<span class="ln">1906</span> * Returns a list of array(namespace, directive) for all directives
<span class="ln">1907</span> * that are allowed in a web-form context as per an allowed
<span class="ln">1908</span> * namespaces/directives list.
<span class="ln">1909</span> * @param $allowed List of allowed namespaces/directives
<span class="ln">1910</span> */
</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">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php(1483): <strong>HTMLPurifier_Config</strong>-><strong>loadArray</strong>(array("AutoFormat.RemoveEmpty"
=> false, "CSS.AllowTricky" => true, "HTML.SafeObject" =>
true, "Output.FlashCompat" => true, ...)) </div>
<div class="code"><pre><span class="ln">1478</span> $ret = HTMLPurifier_Config::createDefault();
<span class="ln">1479</span> } else {
<span class="ln">1480</span> $ret = new HTMLPurifier_Config($schema);
<span class="ln">1481</span> }
<span class="ln">1482</span> if (is_string($config)) $ret->loadIni($config);
<span class="error"><span class="ln error-ln">1483</span> elseif (is_array($config)) $ret->loadArray($config);
</span><span class="ln">1484</span> return $ret;
<span class="ln">1485</span> }
<span class="ln">1486</span>
<span class="ln">1487</span> /**
<span class="ln">1488</span> * Creates a new config object that inherits from a previous one.
</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>
/var/www/limesurvey/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php(110): <strong>HTMLPurifier_Config</strong>::<strong>create</strong>(array("AutoFormat.RemoveEmpty"
=> false, "CSS.AllowTricky" => true, "HTML.SafeObject" =>
true, "Output.FlashCompat" => true, ...)) </div>
<div class="code"><pre><span class="ln">105</span> * The parameter can also be any type that
<span class="ln">106</span> * HTMLPurifier_Config::create() supports.
<span class="ln">107</span> */
<span class="ln">108</span> public function __construct($config = null) {
<span class="ln">109</span>
<span class="error"><span class="ln error-ln">110</span> $this->config = HTMLPurifier_Config::create($config);
</span><span class="ln">111</span>
<span class="ln">112</span> $this->strategy = new HTMLPurifier_Strategy_Core();
<span class="ln">113</span>
<span class="ln">114</span> }
<span class="ln">115</span>
</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>
/var/www/limesurvey/framework/web/widgets/CHtmlPurifier.php(126): <strong>HTMLPurifier</strong>-><strong>__construct</strong>(array("AutoFormat.RemoveEmpty"
=> false, "CSS.AllowTricky" => true, "HTML.SafeObject" =>
true, "Output.FlashCompat" => true, ...)) </div>
<div class="code"><pre><span class="ln">121</span> * Create a new HTML Purifier instance.
<span class="ln">122</span> * @return HTMLPurifier
<span class="ln">123</span> */
<span class="ln">124</span> protected function createNewHtmlPurifierInstance()
<span class="ln">125</span> {
<span class="error"><span class="ln error-ln">126</span> $this->_purifier=new HTMLPurifier($this->getOptions());
</span><span class="ln">127</span> $this->_purifier->config->set('Cache.SerializerPath',Yii::app()->getRuntimePath());
<span class="ln">128</span> return $this->_purifier;
<span class="ln">129</span> }
<span class="ln">130</span> }
</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>
/var/www/limesurvey/framework/web/widgets/CHtmlPurifier.php(96): <strong>CHtmlPurifier</strong>-><strong>createNewHtmlPurifierInstance</strong>() </div>
<div class="code"><pre><span class="ln">091</span> * @return CHtmlPurifier
<span class="ln">092</span> */
<span class="ln">093</span> public function setOptions($options)
<span class="ln">094</span> {
<span class="ln">095</span> $this->_options=$options;
<span class="error"><span class="ln error-ln">096</span> $this->createNewHtmlPurifierInstance();
</span><span class="ln">097</span> return $this;
<span class="ln">098</span> }
<span class="ln">099</span>
<span class="ln">100</span> /**
<span class="ln">101</span> * Get the options for the HTML Purifier instance.
</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>
/var/www/limesurvey/framework/base/CComponent.php(152): <strong>CHtmlPurifier</strong>-><strong>setOptions</strong>(array("AutoFormat.RemoveEmpty"
=> false, "CSS.AllowTricky" => true, "HTML.SafeObject" =>
true, "Output.FlashCompat" => true, ...)) </div>
<div class="code"><pre><span class="ln">147</span> */
<span class="ln">148</span> public function __set($name,$value)
<span class="ln">149</span> {
<span class="ln">150</span> $setter='set'.$name;
<span class="ln">151</span> if(method_exists($this,$setter))
<span class="error"><span class="ln error-ln">152</span> return $this->$setter($value);
</span><span class="ln">153</span> elseif(strncasecmp($name,'on',2)===0 && method_exists($this,$name))
<span class="ln">154</span> {
<span class="ln">155</span> // duplicating getEventHandlers() here for performance
<span class="ln">156</span> $name=strtolower($name);
<span class="ln">157</span> if(!isset($this->_e[$name]))
</pre></div> </td>
</tr>
<tr class="trace app expanded">
<td class="number">
#5 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/application/core/LSYii_Validators.php(105): <strong>CComponent</strong>-><strong>__set</strong>("options",
array("AutoFormat.RemoveEmpty" => false, "CSS.AllowTricky" =>
true, "HTML.SafeObject" => true, "Output.FlashCompat" => true,
...)) </div>
<div class="code"><pre><span class="ln">100</span> * @param string $value
<span class="ln">101</span> */
<span class="ln">102</span> public function xssFilter($value)
<span class="ln">103</span> {
<span class="ln">104</span> $filter = new CHtmlPurifier();
<span class="error"><span class="ln error-ln">105</span> $filter->options = array(
</span><span class="ln">106</span> 'AutoFormat.RemoveEmpty'=>false,
<span class="ln">107</span> 'CSS.AllowTricky'=>true, // Allow display:none; (and other)
<span class="ln">108</span> 'HTML.SafeObject'=>true, // To allow including youtube
<span class="ln">109</span> 'Output.FlashCompat'=>true,
<span class="ln">110</span> 'Attr.EnableID'=>true, // Allow to set id
</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>
/var/www/limesurvey/application/core/LSYii_Validators.php(52): <strong>LSYii_Validators</strong>-><strong>xssFilter</strong>("Jean MOULIN") </div>
<div class="code"><pre><span class="ln">47</span>
<span class="ln">48</span> protected function validateAttribute($object,$attribute)
<span class="ln">49</span> {
<span class="ln">50</span> if($this->xssfilter)
<span class="ln">51</span> {
<span class="error"><span class="ln error-ln">52</span> $object->$attribute=$this->xssFilter($object->$attribute);
</span><span class="ln">53</span> }
<span class="ln">54</span> if($this->isUrl)
<span class="ln">55</span> {
<span class="ln">56</span> if ($object->$attribute== 'http://' || $object->$attribute=='https://') {$object->$attribute="";}
<span class="ln">57</span> $object->$attribute=html_entity_decode($object->$attribute, ENT_QUOTES, "UTF-8"); // 140219 : Why not urlencode ?
</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>
/var/www/limesurvey/framework/validators/CValidator.php(213): <strong>LSYii_Validators</strong>-><strong>validateAttribute</strong>(Survey, "admin") </div>
<div class="code"><pre><span class="ln">208</span> else
<span class="ln">209</span> $attributes=$this->attributes;
<span class="ln">210</span> foreach($attributes as $attribute)
<span class="ln">211</span> {
<span class="ln">212</span> if(!$this->skipOnError || !$object->hasErrors($attribute))
<span class="error"><span class="ln error-ln">213</span> $this->validateAttribute($object,$attribute);
</span><span class="ln">214</span> }
<span class="ln">215</span> }
<span class="ln">216</span>
<span class="ln">217</span> /**
<span class="ln">218</span> * Returns the JavaScript needed for performing client-side validation.
</pre></div> </td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#8 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/base/CModel.php(159): <strong>CValidator</strong>-><strong>validate</strong>(Survey, null) </div>
<div class="code"><pre><span class="ln">154</span> if($clearErrors)
<span class="ln">155</span> $this->clearErrors();
<span class="ln">156</span> if($this->beforeValidate())
<span class="ln">157</span> {
<span class="ln">158</span> foreach($this->getValidators() as $validator)
<span class="error"><span class="ln error-ln">159</span> $validator->validate($this,$attributes);
</span><span class="ln">160</span> $this->afterValidate();
<span class="ln">161</span> return !$this->hasErrors();
<span class="ln">162</span> }
<span class="ln">163</span> else
<span class="ln">164</span> return false;
</pre></div> </td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#9 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/db/ar/CActiveRecord.php(805): <strong>CModel</strong>-><strong>validate</strong>(null) </div>
<div class="code"><pre><span class="ln">800</span> * meaning all attributes that are loaded from DB will be saved.
<span class="ln">801</span> * @return boolean whether the saving succeeds
<span class="ln">802</span> */
<span class="ln">803</span> public function save($runValidation=true,$attributes=null)
<span class="ln">804</span> {
<span class="error"><span class="ln error-ln">805</span> if(!$runValidation || $this->validate($attributes))
</span><span class="ln">806</span> return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);
<span class="ln">807</span> else
<span class="ln">808</span> return false;
<span class="ln">809</span> }
<span class="ln">810</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>
/var/www/limesurvey/application/models/Survey.php(381): <strong>CActiveRecord</strong>-><strong>save</strong>() </div>
<div class="code"><pre><span class="ln">376</span> while (!is_null($isresult));
<span class="ln">377</span>
<span class="ln">378</span> $survey = new self;
<span class="ln">379</span> foreach ($aData as $k => $v)
<span class="ln">380</span> $survey->$k = $v;
<span class="error"><span class="ln error-ln">381</span> $sResult= $survey->save();
</span><span class="ln">382</span> if ($sResult==false) return false;
<span class="ln">383</span> else return $aData['sid'];
<span class="ln">384</span> }
<span class="ln">385</span>
<span class="ln">386</span> /**
</pre></div> </td>
</tr>
<tr class="trace app collapsed">
<td class="number">
#11 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/application/controllers/admin/surveyadmin.php(1578): <strong>Survey</strong>-><strong>insertNewSurvey</strong>(array("expires" => "", "startdate" => "", "template" => "default", "owner_id" => 58, ...)) </div>
<div class="code"><pre><span class="ln">1573</span> if (!is_null($iSurveyID))
<span class="ln">1574</span> {
<span class="ln">1575</span> $aInsertData['wishSID'] = $iSurveyID;
<span class="ln">1576</span> }
<span class="ln">1577</span>
<span class="error"><span class="ln error-ln">1578</span> $iNewSurveyid = Survey::model()->insertNewSurvey($aInsertData);
</span><span class="ln">1579</span> if (!$iNewSurveyid)
<span class="ln">1580</span> die('Survey could not be created.');
<span class="ln">1581</span>
<span class="ln">1582</span> // Prepare locale data for surveys_language_settings table
<span class="ln">1583</span> $sTitle = $_POST['surveyls_title'];
</pre></div> </td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#12 </td>
<td class="content">
<div class="trace-file">
unknown(0): <strong>SurveyAdmin</strong>-><strong>insert</strong>(null) </div>
</td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#13 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/actions/CAction.php(108): <strong>ReflectionMethod</strong>-><strong>invokeArgs</strong>(SurveyAdmin, array(null)) </div>
<div class="code"><pre><span class="ln">103</span> elseif($param->isDefaultValueAvailable())
<span class="ln">104</span> $ps[]=$param->getDefaultValue();
<span class="ln">105</span> else
<span class="ln">106</span> return false;
<span class="ln">107</span> }
<span class="error"><span class="ln error-ln">108</span> $method->invokeArgs($object,$ps);
</span><span class="ln">109</span> return true;
<span class="ln">110</span> }
<span class="ln">111</span> }
</pre></div> </td>
</tr>
<tr class="trace app collapsed">
<td class="number">
#14 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/application/core/Survey_Common_Action.php(99): <strong>CAction</strong>-><strong>runWithParamsInternal</strong>(SurveyAdmin, ReflectionMethod, array("sa" => "insert")) </div>
<div class="code"><pre><span class="ln">094</span> $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">095</span> }
<span class="ln">096</span>
<span class="ln">097</span> // We're all good to go, let's execute it
<span class="ln">098</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">099</span> return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">100</span> }
<span class="ln">101</span>
<span class="ln">102</span> /**
<span class="ln">103</span> * Some functions have different parameters, which are just an alias of the
<span class="ln">104</span> * usual parameters we're getting in the url. This function just populates
</pre></div> </td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#15 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-><strong>runWithParams</strong>(array("sa" => "insert")) </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 collapsed">
<td class="number">
#16 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/CController.php(286): <strong>CController</strong>-><strong>runAction</strong>(SurveyAdmin) </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 collapsed">
<td class="number">
#17 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>(SurveyAdmin, 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 collapsed">
<td class="number">
#18 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/application/controllers/AdminController.php(169): <strong>CController</strong>-><strong>run</strong>("survey") </div>
<div class="code"><pre><span class="ln">164</span> $this->redirect(array('/admin/authentication/sa/login'));
<span class="ln">165</span> }
<span class="ln">166</span>
<span class="ln">167</span> }
<span class="ln">168</span>
<span class="error"><span class="ln error-ln">169</span> return parent::run($action);
</span><span class="ln">170</span> }
<span class="ln">171</span>
<span class="ln">172</span> /**
<span class="ln">173</span> * Routes all the actions to their respective places
<span class="ln">174</span> *
</pre></div> </td>
</tr>
<tr class="trace core collapsed">
<td class="number">
#19 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-><strong>run</strong>("survey") </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 collapsed">
<td class="number">
#20 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>("admin/survey/sa/insert") </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 collapsed">
<td class="number">
#21 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/framework/base/CApplication.php(180): <strong>CWebApplication</strong>-><strong>processRequest</strong>() </div>
<div class="code"><pre><span class="ln">175</span> public function run()
<span class="ln">176</span> {
<span class="ln">177</span> if($this->hasEventHandler('onBeginRequest'))
<span class="ln">178</span> $this->onBeginRequest(new CEvent($this));
<span class="ln">179</span> register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">180</span> $this->processRequest();
</span><span class="ln">181</span> if($this->hasEventHandler('onEndRequest'))
<span class="ln">182</span> $this->onEndRequest(new CEvent($this));
<span class="ln">183</span> }
<span class="ln">184</span>
<span class="ln">185</span> /**
</pre></div> </td>
</tr>
<tr class="trace app collapsed">
<td class="number">
#22 </td>
<td class="content">
<div class="trace-file">
<div class="plus">+</div>
<div class="minus">–</div>
/var/www/limesurvey/index.php(200): <strong>CApplication</strong>-><strong>run</strong>() </div>
<div class="code"><pre><span class="ln">195</span> die (sprintf('%s should be writable by the webserver (755 or 775).', $runtimePath));
<span class="ln">196</span> }
<span class="ln">197</span> }
<span class="ln">198</span>
<span class="ln">199</span>
<span class="error"><span class="ln error-ln">200</span> Yii::createApplication('LSYii_Application', $config)->run();
</span><span class="ln">201</span>
<span class="ln">202</span> /* End of file index.php */
<span class="ln">203</span> /* Location: ./index.php */
</pre></div> </td>
</tr>
</tbody></table>
</div>
<div class="version">
2014-05-02 13:52:14 Apache/2.2.22 (Ubuntu) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.14 </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>
<script type="text/javascript">
/*<![CDATA[*/
if(typeof(console)=='object')
{
console.group("Application Log");
console.log("[13:52:14.309][trace][system.db.ar.CActiveRecord] Plugin.findAllByAttributes()");
console.log("[13:52:14.311][trace][system.db.CDbConnection] Opening DB connection");
console.log("[13:52:14.323][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_plugins` `t` WHERE `t`.`active`=:yp0. Bound with :yp0=1");
console.log("[13:52:14.337][trace][system.db.ar.CActiveRecord] SettingGlobal.findAll()");
console.log("[13:52:14.337][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_settings_global` `t`");
console.log("[13:52:14.451][trace][system.db.ar.CActiveRecord] Permission.findByAttributes()");
console.log("[13:52:14.452][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_permissions` `t` WHERE `t`.`entity_id`=:yp0 AND `t`.`entity`=:yp1 AND `t`.`uid`=:yp2 AND `t`.`permission`=:yp3 LIMIT 1. Bound with :yp0=0, :yp1=\'global\', :yp2=58, :yp3=\'superadmin\'");
console.log("[13:52:14.452][trace][system.db.ar.CActiveRecord] Permission.findByAttributes()");
console.log("[13:52:14.452][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_permissions` `t` WHERE `t`.`entity_id`=:yp0 AND `t`.`uid`=:yp1 AND `t`.`entity`=:yp2 AND `t`.`permission`=:yp3 LIMIT 1. Bound with :yp0=0, :yp1=58, :yp2=\'global\', :yp3=\'surveys\'");
console.log("[13:52:14.453][trace][system.db.ar.CActiveRecord] Permission.findByAttributes()");
console.log("[13:52:14.453][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_permissions` `t` WHERE `t`.`entity_id`=:yp0 AND `t`.`uid`=:yp1 AND `t`.`entity`=:yp2 AND `t`.`permission`=:yp3 LIMIT 1. Bound with :yp0=0, :yp1=58, :yp2=\'global\', :yp3=\'templates\'");
console.log("[13:52:14.454][trace][system.db.ar.CActiveRecord] Permission.findByAttributes()");
console.log("[13:52:14.454][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_permissions` `t` WHERE `t`.`entity_id`=:yp0 AND `t`.`uid`=:yp1 AND `t`.`entity`=:yp2 AND `t`.`permission`=:yp3 LIMIT 1. Bound with :yp0=0, :yp1=\'58\', :yp2=\'template\', :yp3=\'basic\'");
console.log("[13:52:14.470][trace][system.db.ar.CActiveRecord] Survey.findByPk()");
console.log("[13:52:14.470][trace][system.db.CDbCommand] Querying SQL: SELECT * FROM `lime_surveys` `t` WHERE `t`.`sid`=149151 LIMIT 1");
console.groupEnd();
}
/*]]>*/
</script></body></html> | ||||
| Bug heat | 4 | ||||
| Complete LimeSurvey version number (& build) | 2.05+ Build 140422 | ||||
| I will donate to the project if issue is resolved | No | ||||
| Browser | firefox | ||||
| Database type & version | MySQL: 5.5.31 | ||||
| Server OS (if known) | Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic x86_64) | ||||
| Webserver software & version (if known) | Apache/2.2.22 | ||||
| PHP Version | PHP 5.3 | ||||
| Git branch / Pull Request URL | |||||
|
What permissions does the user have? |
|
|
Helo |
|
|
I am sorry but I cannot reproduce this. Can you activate debug mode in /Application/config/config.php and attach the full debug output (when the error happens) as HTML file? Thank you |
|
|
the htm error page in the joined file |
|
|
Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=14199 |
|
|
it's ok now |
|
|
2.05+ Build 140502 released. |
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2014-04-30 16:13 | zewood | New Issue | |
| 2014-04-30 16:13 | zewood | Status | new => assigned |
| 2014-04-30 16:13 | zewood | Assigned To | => c_schmitz |
| 2014-05-02 09:55 | c_schmitz | Note Added: 29921 | |
| 2014-05-02 09:55 | c_schmitz | Status | assigned => feedback |
| 2014-05-02 09:59 | zewood | File Added: Capture.JPG | |
| 2014-05-02 10:00 | zewood | Note Added: 29922 | |
| 2014-05-02 10:00 | zewood | Status | feedback => assigned |
| 2014-05-02 12:48 | c_schmitz | Note Added: 29933 | |
| 2014-05-02 12:48 | c_schmitz | Status | assigned => feedback |
| 2014-05-02 13:58 | zewood | Note Added: 29941 | |
| 2014-05-02 13:58 | zewood | Status | feedback => assigned |
| 2014-05-02 13:58 | zewood | File Added: PHP warning.htm | |
| 2014-05-02 14:04 | c_schmitz | Changeset attached | => LimeSurvey master fccdb298 |
| 2014-05-02 14:04 | c_schmitz | Note Added: 29942 | |
| 2014-05-02 14:04 | c_schmitz | Resolution | open => fixed |
| 2014-05-02 14:04 | c_schmitz | Status | assigned => resolved |
| 2014-05-02 14:04 | c_schmitz | Fixed in Version | => 2.05+ |
| 2014-05-02 14:52 | zewood | Note Added: 29943 | |
| 2014-05-02 14:52 | zewood | Note Edited: 29943 | |
| 2014-05-02 15:10 | c_schmitz | Note Added: 29944 | |
| 2014-05-02 15:10 | c_schmitz | Status | resolved => closed |