View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
17787Bug reportsSurvey takingpublic2022-02-28 12:58
ReporterDenisChenu Assigned ToDenisChenu  
PrioritynoneSeverityminor 
Status closedResolutionfixed 
Product Version5.2.x 
Summary17787: open_base_dir + debug can throw error when load some question type.
Description

If you have open_base_dir restrictin with dir end with / and test a upload file with debug : you receive an PHP Warning error.

Steps To Reproduce

Steps to reproduce

  1. Set open_base_dir to /var/:/tmp/:/home/ for example
  2. Activate debug mode
  3. Import included survey
  4. preview question

Expected result

See upload question

Actual result

Error

TagsNo tags attached.
Attached Files
PHP warning.html (23,165 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">
		is_file(): open_basedir restriction in effect. 
File(/survey/questions/answer/file_upload/config.xml) is not within the 
allowed path(s): (/var/www/html/:/var/www/tmp/:/usr/share/php/)	</p>

	<div class="source">
		<p class="file">/var/www/html/application/models/QuestionTemplate.php(268)</p>
		<div class="code"><pre><span class="ln">256</span> 
<span class="ln">257</span>     /**
<span class="ln">258</span>      * In the future, could retrieve data from DB
<span class="ln">259</span>      */
<span class="ln">260</span>     public function setConfig()
<span class="ln">261</span>     {
<span class="ln">262</span>         if (!isset($this-&gt;oConfig)) {
<span class="ln">263</span>             $oQuestion                    = $this-&gt;oQuestion;
<span class="ln">264</span>             $sTemplatePath                = $this-&gt;getTemplatePath();
<span class="ln">265</span>             $sFolderName                  = self::getFolderName($oQuestion-&gt;type);
<span class="ln">266</span>             $this-&gt;sTemplateQuestionPath  = $sTemplatePath . '/survey/questions/answer/' . $sFolderName;
<span class="ln">267</span>             $xmlFile                      = $this-&gt;sTemplateQuestionPath . '/config.xml';
<span class="error"><span class="ln error-ln">268</span>             $this-&gt;bHasConfigFile         = is_file($xmlFile);
</span><span class="ln">269</span> 
<span class="ln">270</span>             if ($this-&gt;bHasConfigFile) {
<span class="ln">271</span>                 $sXMLConfigFile               = file_get_contents(realpath($xmlFile)); // Entity loader is disabled, so we can't use simplexml_load_file; so we must read the file with file_get_contents and convert it as a string
<span class="ln">272</span>                 $this-&gt;xmlFile                = $xmlFile;
<span class="ln">273</span>                 $this-&gt;oConfig                 = simplexml_load_string($sXMLConfigFile);
<span class="ln">274</span> 
<span class="ln">275</span>                 $this-&gt;bLoadCoreJs             = $this-&gt;oConfig-&gt;engine-&gt;load_core_js;
<span class="ln">276</span>                 $this-&gt;bLoadCoreCss            = $this-&gt;oConfig-&gt;engine-&gt;load_core_css;
<span class="ln">277</span>                 $this-&gt;bLoadCorePackage        = $this-&gt;oConfig-&gt;engine-&gt;load_core_package;
<span class="ln">278</span>                 $this-&gt;bHasCustomAttributes    = !empty($this-&gt;oConfig-&gt;attributes);
<span class="ln">279</span> 
<span class="ln">280</span>                 // Set the custom attributes
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><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;/var/www/html/application/models/QuestionTemplate.php(268): <strong>is_file</strong>("/survey/questions/answer/file_upload/config.xml")				</div>

				<div class="code"><pre><span class="ln">263</span>             $oQuestion                    = $this-&gt;oQuestion;
<span class="ln">264</span>             $sTemplatePath                = $this-&gt;getTemplatePath();
<span class="ln">265</span>             $sFolderName                  = self::getFolderName($oQuestion-&gt;type);
<span class="ln">266</span>             $this-&gt;sTemplateQuestionPath  = $sTemplatePath . '/survey/questions/answer/' . $sFolderName;
<span class="ln">267</span>             $xmlFile                      = $this-&gt;sTemplateQuestionPath . '/config.xml';
<span class="error"><span class="ln error-ln">268</span>             $this-&gt;bHasConfigFile         = is_file($xmlFile);
</span><span class="ln">269</span> 
<span class="ln">270</span>             if ($this-&gt;bHasConfigFile) {
<span class="ln">271</span>                 $sXMLConfigFile               = file_get_contents(realpath($xmlFile)); // Entity loader is disabled, so we can't use simplexml_load_file; so we must read the file with file_get_contents and convert it as a string
<span class="ln">272</span>                 $this-&gt;xmlFile                = $xmlFile;
<span class="ln">273</span>                 $this-&gt;oConfig                 = simplexml_load_string($sXMLConfigFile);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/application/models/QuestionTemplate.php(76): <strong>QuestionTemplate</strong>-&gt;<strong>setConfig</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         self::$instance = new QuestionTemplate();
<span class="ln">73</span>         self::$instance-&gt;oQuestion = $oQuestion;
<span class="ln">74</span>         self::$instance-&gt;aViews    = array();
<span class="ln">75</span>         self::$instance-&gt;getQuestionTemplateFolderName(); // Will initiate $sTemplateFolderName and $bHasTemplate.
<span class="error"><span class="ln error-ln">76</span>         self::$instance-&gt;setConfig();
</span><span class="ln">77</span>         return self::$instance;
<span class="ln">78</span>     }
<span class="ln">79</span> 
<span class="ln">80</span>     /**
<span class="ln">81</span>      * Get the current instance of template question object.
</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;/var/www/html/application/helpers/qanda_helper.php(151): <strong>QuestionTemplate</strong>::<strong>getNewInstance</strong>(Question)				</div>

				<div class="code"><pre><span class="ln">146</span>         ,'input_error_class'  =&gt; ''              // provides a class.
<span class="ln">147</span>         ,'essentials'         =&gt; ''
<span class="ln">148</span>     );
<span class="ln">149</span> 
<span class="ln">150</span>     $oQuestion = Question::model()-&gt;findByPk($ia[0]);
<span class="error"><span class="ln error-ln">151</span>     $oQuestionTemplate = QuestionTemplate::getNewInstance($oQuestion);
</span><span class="ln">152</span>     $oQuestionTemplate-&gt;registerAssets(); // Register the custom assets of the question template, if needed
<span class="ln">153</span>     $oRenderer = $oQuestion-&gt;getRenderererObject($ia);
<span class="ln">154</span>     $values = $oRenderer-&gt;render();
<span class="ln">155</span> 
<span class="ln">156</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/application/helpers/SurveyRuntimeHelper.php(279): <strong>retrieveAnswers</strong>(array("1", "132339X1X1", "Q00Z", "A first example question. Please answer this question:", ...))				</div>

				<div class="code"><pre><span class="ln">274</span>                         }
<span class="ln">275</span> 
<span class="ln">276</span>                         //Get the answers/inputnames
<span class="ln">277</span>                         // TMSW - can content of retrieveAnswers() be provided by LEM?  Review scope of what it provides.
<span class="ln">278</span>                         // TODO - retrieveAnswers is slow - queries database separately for each question. May be fixed in _CI or _YII ports, so ignore for now
<span class="error"><span class="ln error-ln">279</span>                         list($plus_qanda, $plus_inputnames) = retrieveAnswers($ia);
</span><span class="ln">280</span> 
<span class="ln">281</span>                         if ($plus_qanda) {
<span class="ln">282</span>                             $plus_qanda[] = $ia[4];
<span class="ln">283</span>                             $plus_qanda[] = $ia[6]; // adds madatory identifyer for adding mandatory class to question wrapping div
<span class="ln">284</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/application/controllers/survey/index.php(610): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>run</strong>("132339",
 array("surveyid" =&gt; "132339", "thissurvey" =&gt; array("htmlemail" 
=&gt; "Y", "format" =&gt; "G", "tokenencryptionoptions" =&gt; "", 
"template" =&gt; "fruity", ...), "thisstep" =&gt; "0", "tokensexist" 
=&gt; 0, ...))				</div>

				<div class="code"><pre><span class="ln">605</span>         unset($redata);
<span class="ln">606</span>         $redata = compact(array_keys(get_defined_vars()));
<span class="ln">607</span>         Yii::import('application.helpers.SurveyRuntimeHelper');
<span class="ln">608</span>         $tmp = new SurveyRuntimeHelper();
<span class="ln">609</span>         // try {
<span class="error"><span class="ln error-ln">610</span>             $tmp-&gt;run($surveyid, $redata);
</span><span class="ln">611</span>         // } catch (WrongTemplateVersionException $ex) {
<span class="ln">612</span>         //     echo $ex-&gt;getMessage();
<span class="ln">613</span>         // }
<span class="ln">614</span>     }
<span class="ln">615</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/application/controllers/survey/index.php(26): <strong>index</strong>-&gt;<strong>action</strong>()				</div>

				<div class="code"><pre><span class="ln">21</span>     public $oTemplate;
<span class="ln">22</span> 
<span class="ln">23</span>     public function run()
<span class="ln">24</span>     {
<span class="ln">25</span>         useFirebug();
<span class="error"><span class="ln error-ln">26</span>         $this-&gt;action();
</span><span class="ln">27</span>     }
<span class="ln">28</span> 
<span class="ln">29</span>     public function action()
<span class="ln">30</span>     {
<span class="ln">31</span>         global $surveyid;
</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;/var/www/html/framework/web/actions/CAction.php(76): <strong>index</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         $method=new ReflectionMethod($this, 'run');
<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">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/framework/web/CController.php(308): <strong>CAction</strong>-&gt;<strong>runWithParams</strong>(array("sid" =&gt; "132339"))				</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">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(index)				</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">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(index, 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 core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/framework/web/CWebApplication.php(282): <strong>CController</strong>-&gt;<strong>run</strong>("index")				</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 collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("survey/index/sid/132339")				</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">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/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 collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/index.php(192): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

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

	<div class="version">
		2021-12-07 20:40:39 Apache <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.24-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>



<div id="grammalecte_menu_main_button_shadow_host" style="width: 0px; height: 0px;"></div></body><script src="PHP%20warning_fichiers/api.js"></script></html>
PHP warning.html (23,165 bytes)   
limesurvey_survey_576232.lss (16,728 bytes)   
<?xml version="1.0" encoding="UTF-8"?>
<document>
 <LimeSurveyDocType>Survey</LimeSurveyDocType>
 <DBVersion>477</DBVersion>
 <languages>
  <language>en</language>
 </languages>
 <groups>
  <fields>
   <fieldname>gid</fieldname>
   <fieldname>sid</fieldname>
   <fieldname>group_order</fieldname>
   <fieldname>randomization_group</fieldname>
   <fieldname>grelevance</fieldname>
  </fields>
  <rows>
   <row>
    <gid><![CDATA[8]]></gid>
    <sid><![CDATA[576232]]></sid>
    <group_order><![CDATA[1]]></group_order>
    <randomization_group/>
    <grelevance><![CDATA[1]]></grelevance>
   </row>
  </rows>
 </groups>
 <group_l10ns>
  <fields>
   <fieldname>id</fieldname>
   <fieldname>gid</fieldname>
   <fieldname>group_name</fieldname>
   <fieldname>description</fieldname>
   <fieldname>language</fieldname>
   <fieldname>sid</fieldname>
   <fieldname>group_order</fieldname>
   <fieldname>randomization_group</fieldname>
   <fieldname>grelevance</fieldname>
  </fields>
  <rows>
   <row>
    <id><![CDATA[26]]></id>
    <gid><![CDATA[8]]></gid>
    <group_name><![CDATA[My first question group]]></group_name>
    <language><![CDATA[en]]></language>
    <sid><![CDATA[576232]]></sid>
    <group_order><![CDATA[1]]></group_order>
    <randomization_group/>
    <grelevance><![CDATA[1]]></grelevance>
   </row>
  </rows>
 </group_l10ns>
 <questions>
  <fields>
   <fieldname>qid</fieldname>
   <fieldname>parent_qid</fieldname>
   <fieldname>sid</fieldname>
   <fieldname>gid</fieldname>
   <fieldname>type</fieldname>
   <fieldname>title</fieldname>
   <fieldname>preg</fieldname>
   <fieldname>other</fieldname>
   <fieldname>mandatory</fieldname>
   <fieldname>encrypted</fieldname>
   <fieldname>question_order</fieldname>
   <fieldname>scale_id</fieldname>
   <fieldname>same_default</fieldname>
   <fieldname>relevance</fieldname>
   <fieldname>modulename</fieldname>
   <fieldname>question_theme_name</fieldname>
  </fields>
  <rows>
   <row>
    <qid><![CDATA[196]]></qid>
    <parent_qid><![CDATA[0]]></parent_qid>
    <sid><![CDATA[576232]]></sid>
    <gid><![CDATA[8]]></gid>
    <type><![CDATA[|]]></type>
    <title><![CDATA[Q00]]></title>
    <preg/>
    <other><![CDATA[N]]></other>
    <mandatory><![CDATA[N]]></mandatory>
    <encrypted><![CDATA[N]]></encrypted>
    <question_order><![CDATA[1]]></question_order>
    <scale_id><![CDATA[0]]></scale_id>
    <same_default><![CDATA[0]]></same_default>
    <relevance><![CDATA[1]]></relevance>
    <modulename/>
    <question_theme_name><![CDATA[file_upload]]></question_theme_name>
   </row>
  </rows>
 </questions>
 <question_l10ns>
  <fields>
   <fieldname>id</fieldname>
   <fieldname>qid</fieldname>
   <fieldname>question</fieldname>
   <fieldname>help</fieldname>
   <fieldname>script</fieldname>
   <fieldname>language</fieldname>
  </fields>
  <rows>
   <row>
    <id><![CDATA[715]]></id>
    <qid><![CDATA[196]]></qid>
    <question><![CDATA[<p>Upload a file with specific character</p>]]></question>
    <help/>
    <script/>
    <language><![CDATA[en]]></language>
   </row>
  </rows>
 </question_l10ns>
 <question_attributes>
  <fields>
   <fieldname>qid</fieldname>
   <fieldname>attribute</fieldname>
   <fieldname>value</fieldname>
   <fieldname>language</fieldname>
  </fields>
  <rows>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[allowed_filetypes]]></attribute>
    <value><![CDATA[png,gif,jpg,pdf,png]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[cssclass]]></attribute>
    <value/>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[hidden]]></attribute>
    <value><![CDATA[0]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[hide_tip]]></attribute>
    <value><![CDATA[0]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[max_filesize]]></attribute>
    <value><![CDATA[10240]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[max_num_of_files]]></attribute>
    <value><![CDATA[1]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[min_num_of_files]]></attribute>
    <value><![CDATA[0]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[page_break]]></attribute>
    <value><![CDATA[0]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[question_template]]></attribute>
    <value><![CDATA[core]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[random_group]]></attribute>
    <value/>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[save_as_default]]></attribute>
    <value><![CDATA[Y]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[show_comment]]></attribute>
    <value><![CDATA[1]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[show_title]]></attribute>
    <value><![CDATA[1]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[statistics_graphtype]]></attribute>
    <value><![CDATA[0]]></value>
   </row>
   <row>
    <qid><![CDATA[196]]></qid>
    <attribute><![CDATA[statistics_showgraph]]></attribute>
    <value><![CDATA[1]]></value>
   </row>
  </rows>
 </question_attributes>
 <surveys>
  <fields>
   <fieldname>sid</fieldname>
   <fieldname>gsid</fieldname>
   <fieldname>admin</fieldname>
   <fieldname>expires</fieldname>
   <fieldname>startdate</fieldname>
   <fieldname>adminemail</fieldname>
   <fieldname>anonymized</fieldname>
   <fieldname>faxto</fieldname>
   <fieldname>format</fieldname>
   <fieldname>savetimings</fieldname>
   <fieldname>template</fieldname>
   <fieldname>language</fieldname>
   <fieldname>additional_languages</fieldname>
   <fieldname>datestamp</fieldname>
   <fieldname>usecookie</fieldname>
   <fieldname>allowregister</fieldname>
   <fieldname>allowsave</fieldname>
   <fieldname>autonumber_start</fieldname>
   <fieldname>autoredirect</fieldname>
   <fieldname>allowprev</fieldname>
   <fieldname>printanswers</fieldname>
   <fieldname>ipaddr</fieldname>
   <fieldname>ipanonymize</fieldname>
   <fieldname>refurl</fieldname>
   <fieldname>showsurveypolicynotice</fieldname>
   <fieldname>publicstatistics</fieldname>
   <fieldname>publicgraphs</fieldname>
   <fieldname>listpublic</fieldname>
   <fieldname>htmlemail</fieldname>
   <fieldname>sendconfirmation</fieldname>
   <fieldname>tokenanswerspersistence</fieldname>
   <fieldname>assessments</fieldname>
   <fieldname>usecaptcha</fieldname>
   <fieldname>usetokens</fieldname>
   <fieldname>bounce_email</fieldname>
   <fieldname>attributedescriptions</fieldname>
   <fieldname>emailresponseto</fieldname>
   <fieldname>emailnotificationto</fieldname>
   <fieldname>tokenlength</fieldname>
   <fieldname>showxquestions</fieldname>
   <fieldname>showgroupinfo</fieldname>
   <fieldname>shownoanswer</fieldname>
   <fieldname>showqnumcode</fieldname>
   <fieldname>bouncetime</fieldname>
   <fieldname>bounceprocessing</fieldname>
   <fieldname>bounceaccounttype</fieldname>
   <fieldname>bounceaccounthost</fieldname>
   <fieldname>bounceaccountpass</fieldname>
   <fieldname>bounceaccountencryption</fieldname>
   <fieldname>bounceaccountuser</fieldname>
   <fieldname>showwelcome</fieldname>
   <fieldname>showprogress</fieldname>
   <fieldname>questionindex</fieldname>
   <fieldname>navigationdelay</fieldname>
   <fieldname>nokeyboard</fieldname>
   <fieldname>alloweditaftercompletion</fieldname>
   <fieldname>googleanalyticsstyle</fieldname>
   <fieldname>googleanalyticsapikey</fieldname>
   <fieldname>tokenencryptionoptions</fieldname>
  </fields>
  <rows>
   <row>
    <sid><![CDATA[576232]]></sid>
    <gsid><![CDATA[1]]></gsid>
    <admin><![CDATA[inherit]]></admin>
    <adminemail><![CDATA[inherit]]></adminemail>
    <anonymized><![CDATA[N]]></anonymized>
    <faxto/>
    <format><![CDATA[G]]></format>
    <savetimings><![CDATA[N]]></savetimings>
    <template><![CDATA[vanilla]]></template>
    <language><![CDATA[en]]></language>
    <additional_languages/>
    <datestamp><![CDATA[Y]]></datestamp>
    <usecookie><![CDATA[I]]></usecookie>
    <allowregister><![CDATA[I]]></allowregister>
    <allowsave><![CDATA[I]]></allowsave>
    <autonumber_start><![CDATA[0]]></autonumber_start>
    <autoredirect><![CDATA[I]]></autoredirect>
    <allowprev><![CDATA[I]]></allowprev>
    <printanswers><![CDATA[I]]></printanswers>
    <ipaddr><![CDATA[N]]></ipaddr>
    <ipanonymize><![CDATA[Y]]></ipanonymize>
    <refurl><![CDATA[N]]></refurl>
    <showsurveypolicynotice><![CDATA[0]]></showsurveypolicynotice>
    <publicstatistics><![CDATA[I]]></publicstatistics>
    <publicgraphs><![CDATA[I]]></publicgraphs>
    <listpublic><![CDATA[I]]></listpublic>
    <htmlemail><![CDATA[I]]></htmlemail>
    <sendconfirmation><![CDATA[I]]></sendconfirmation>
    <tokenanswerspersistence><![CDATA[I]]></tokenanswerspersistence>
    <assessments><![CDATA[I]]></assessments>
    <usecaptcha><![CDATA[E]]></usecaptcha>
    <usetokens><![CDATA[N]]></usetokens>
    <bounce_email><![CDATA[inherit]]></bounce_email>
    <emailresponseto><![CDATA[inherit]]></emailresponseto>
    <emailnotificationto><![CDATA[inherit]]></emailnotificationto>
    <tokenlength><![CDATA[-1]]></tokenlength>
    <showxquestions><![CDATA[I]]></showxquestions>
    <showgroupinfo><![CDATA[I]]></showgroupinfo>
    <shownoanswer><![CDATA[I]]></shownoanswer>
    <showqnumcode><![CDATA[I]]></showqnumcode>
    <bounceprocessing><![CDATA[N]]></bounceprocessing>
    <showwelcome><![CDATA[I]]></showwelcome>
    <showprogress><![CDATA[I]]></showprogress>
    <questionindex><![CDATA[-1]]></questionindex>
    <navigationdelay><![CDATA[-1]]></navigationdelay>
    <nokeyboard><![CDATA[I]]></nokeyboard>
    <alloweditaftercompletion><![CDATA[I]]></alloweditaftercompletion>
    <tokenencryptionoptions/>
   </row>
  </rows>
 </surveys>
 <surveys_languagesettings>
  <fields>
   <fieldname>surveyls_survey_id</fieldname>
   <fieldname>surveyls_language</fieldname>
   <fieldname>surveyls_title</fieldname>
   <fieldname>surveyls_description</fieldname>
   <fieldname>surveyls_welcometext</fieldname>
   <fieldname>surveyls_endtext</fieldname>
   <fieldname>surveyls_policy_notice</fieldname>
   <fieldname>surveyls_policy_error</fieldname>
   <fieldname>surveyls_policy_notice_label</fieldname>
   <fieldname>surveyls_url</fieldname>
   <fieldname>surveyls_urldescription</fieldname>
   <fieldname>surveyls_email_invite_subj</fieldname>
   <fieldname>surveyls_email_invite</fieldname>
   <fieldname>surveyls_email_remind_subj</fieldname>
   <fieldname>surveyls_email_remind</fieldname>
   <fieldname>surveyls_email_register_subj</fieldname>
   <fieldname>surveyls_email_register</fieldname>
   <fieldname>surveyls_email_confirm_subj</fieldname>
   <fieldname>surveyls_email_confirm</fieldname>
   <fieldname>surveyls_dateformat</fieldname>
   <fieldname>surveyls_attributecaptions</fieldname>
   <fieldname>email_admin_notification_subj</fieldname>
   <fieldname>email_admin_notification</fieldname>
   <fieldname>email_admin_responses_subj</fieldname>
   <fieldname>email_admin_responses</fieldname>
   <fieldname>surveyls_numberformat</fieldname>
   <fieldname>attachments</fieldname>
  </fields>
  <rows>
   <row>
    <surveyls_survey_id><![CDATA[576232]]></surveyls_survey_id>
    <surveyls_language><![CDATA[en]]></surveyls_language>
    <surveyls_title><![CDATA[Check upload]]></surveyls_title>
    <surveyls_description/>
    <surveyls_welcometext/>
    <surveyls_endtext/>
    <surveyls_url/>
    <surveyls_urldescription/>
    <surveyls_email_invite_subj><![CDATA[Invitation to participate in a survey]]></surveyls_email_invite_subj>
    <surveyls_email_invite><![CDATA[Dear {FIRSTNAME},

you have been invited to participate in a survey.

The survey is titled:
"{SURVEYNAME}"

"{SURVEYDESCRIPTION}"

To participate, please click on the link below.

Sincerely,

{ADMINNAME} ({ADMINEMAIL})

----------------------------------------------
Click here to do the survey:
{SURVEYURL}

If you do not want to participate in this survey and don't want to receive any more invitations please click the following link:
{OPTOUTURL}

If you are blacklisted but want to participate in this survey and want to receive invitations please click the following link:
{OPTINURL}]]></surveyls_email_invite>
    <surveyls_email_remind_subj><![CDATA[Reminder to participate in a survey]]></surveyls_email_remind_subj>
    <surveyls_email_remind><![CDATA[Dear {FIRSTNAME},

Recently we invited you to participate in a survey.

We note that you have not yet completed the survey, and wish to remind you that the survey is still available should you wish to take part.

The survey is titled:
"{SURVEYNAME}"

"{SURVEYDESCRIPTION}"

To participate, please click on the link below.

Sincerely,

{ADMINNAME} ({ADMINEMAIL})

----------------------------------------------
Click here to do the survey:
{SURVEYURL}

If you do not want to participate in this survey and don't want to receive any more invitations please click the following link:
{OPTOUTURL}]]></surveyls_email_remind>
    <surveyls_email_register_subj><![CDATA[Survey registration confirmation]]></surveyls_email_register_subj>
    <surveyls_email_register><![CDATA[Dear {FIRSTNAME},

You, or someone using your email address, have registered to participate in an online survey titled {SURVEYNAME}.

To complete this survey, click on the following URL:

{SURVEYURL}

If you have any questions about this survey, or if you did not register to participate and believe this email is in error, please contact {ADMINNAME} at {ADMINEMAIL}.]]></surveyls_email_register>
    <surveyls_email_confirm_subj><![CDATA[Confirmation of your participation in our survey]]></surveyls_email_confirm_subj>
    <surveyls_email_confirm><![CDATA[Dear {FIRSTNAME},

this email is to confirm that you have completed the survey titled {SURVEYNAME} and your response has been saved. Thank you for participating.

If you have any further questions about this email, please contact {ADMINNAME} on {ADMINEMAIL}.

Sincerely,

{ADMINNAME}]]></surveyls_email_confirm>
    <surveyls_dateformat><![CDATA[9]]></surveyls_dateformat>
    <email_admin_notification_subj><![CDATA[Response submission for survey {SURVEYNAME}]]></email_admin_notification_subj>
    <email_admin_notification><![CDATA[Hello,

A new response was submitted for your survey '{SURVEYNAME}'.

Click the following link to see the individual response:
{VIEWRESPONSEURL}

Click the following link to edit the individual response:
{EDITRESPONSEURL}

View statistics by clicking here:
{STATISTICSURL}]]></email_admin_notification>
    <email_admin_responses_subj><![CDATA[Response submission for survey {SURVEYNAME} with results]]></email_admin_responses_subj>
    <email_admin_responses><![CDATA[Hello,

A new response was submitted for your survey '{SURVEYNAME}'.

Click the following link to see the individual response:
{VIEWRESPONSEURL}

Click the following link to edit the individual response:
{EDITRESPONSEURL}

View statistics by clicking here:
{STATISTICSURL}


The following answers were given by the participant:
{ANSWERTABLE}]]></email_admin_responses>
    <surveyls_numberformat><![CDATA[0]]></surveyls_numberformat>
   </row>
  </rows>
 </surveys_languagesettings>
 <themes>
  <theme>
   <sid>576232</sid>
   <template_name>skelvanilla</template_name>
   <config>
    <options>inherit</options>
   </config>
  </theme>
  <theme>
   <sid>576232</sid>
   <template_name>vanilla</template_name>
   <config>
    <options>inherit</options>
   </config>
  </theme>
 </themes>
 <themes_inherited>
  <theme>
   <sid>576232</sid>
   <template_name>skelvanilla</template_name>
   <config>
    <options>
     <ajaxmode>off</ajaxmode>
     <brandlogo>on</brandlogo>
     <container>on</container>
     <hideprivacyinfo>off</hideprivacyinfo>
     <brandlogofile>image::theme::files/logo.png</brandlogofile>
     <font>noto</font>
     <showpopups>1</showpopups>
     <showclearall>off</showclearall>
     <questionhelptextposition>top</questionhelptextposition>
    </options>
   </config>
  </theme>
  <theme>
   <sid>576232</sid>
   <template_name>vanilla</template_name>
   <config>
    <options>
     <ajaxmode>off</ajaxmode>
     <brandlogo>on</brandlogo>
     <container>on</container>
     <hideprivacyinfo>off</hideprivacyinfo>
     <brandlogofile>image::theme::files/logo.png</brandlogofile>
     <font>noto</font>
     <showpopups>1</showpopups>
     <showclearall>off</showclearall>
     <questionhelptextposition>top</questionhelptextposition>
    </options>
   </config>
  </theme>
 </themes_inherited>
</document>
limesurvey_survey_576232.lss (16,728 bytes)   
Bug heat4
Complete LimeSurvey version number (& build)5.2.5
I will donate to the project if issue is resolvedNo
Browsernot relevant
Database type & versionmariadb
Server OS (if known)debian
Webserver software & version (if known)apache
PHP Versionphp7.4

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2021-12-08 19:11

developer   ~67744

PS : i know it happen only with debug=2, but try to load '/survey/questions/answer/file_upload/config.xml' is an issue itself.

Happen when $this->getTemplatePath(); return null.

DenisChenu

DenisChenu

2021-12-08 19:18

developer   ~67745

No issue in pull request, needed … i merge ?

DenisChenu

DenisChenu

2021-12-08 19:20

developer   ~67746

Can i merge directly such pull request ?
No possible issue, clearly a bug fix.

DenisChenu

DenisChenu

2021-12-08 19:20

developer   ~67747

https://github.com/LimeSurvey/LimeSurvey/pull/2175

DenisChenu

DenisChenu

2021-12-08 19:25

developer   ~67748

PS : Yii::app()->getConfig("userquestionthemerootdir") return (by default) 'upload/themes/question' then can never be used here …

Else never check /var/www/application/views/surveys/questions/… config file : maybe it's the issue ?

DenisChenu

DenisChenu

2021-12-10 12:51

developer   ~67757

PS opan_base_dir must be set with ending / to throw error (PHP specific related issue : no error with /var/www, error with /var/www/)

DenisChenu

DenisChenu

2022-02-22 22:31

developer   ~68368

Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=33232

LimeBot

LimeBot

2022-02-28 12:58

administrator   ~68429

Fixed in Release 5.3.0+220228

Related Changesets

LimeSurvey: master 9c30e88d

2022-02-22 22:19:34

DenisChenu


Committer: GitHub Details Diff
Fixed issue 17787: open_base_dir + debug can throw error when load some question type. (#2175) Affected Issues
17787
mod - application/models/QuestionTemplate.php Diff File

Issue History

Date Modified Username Field Change
2021-12-08 19:09 DenisChenu New Issue
2021-12-08 19:09 DenisChenu File Added: PHP warning.html
2021-12-08 19:09 DenisChenu File Added: limesurvey_survey_576232.lss
2021-12-08 19:11 DenisChenu Note Added: 67744
2021-12-08 19:11 DenisChenu Bug heat 0 => 2
2021-12-08 19:11 DenisChenu Assigned To => DenisChenu
2021-12-08 19:11 DenisChenu Status new => assigned
2021-12-08 19:18 DenisChenu Note Added: 67745
2021-12-08 19:19 DenisChenu Assigned To DenisChenu => ollehar
2021-12-08 19:20 DenisChenu Note Added: 67746
2021-12-08 19:20 DenisChenu Note Added: 67747
2021-12-08 19:25 DenisChenu Note Added: 67748
2021-12-10 12:51 DenisChenu Note Added: 67757
2021-12-14 12:58 galads Assigned To ollehar => galads
2022-02-22 22:19 c_schmitz Status assigned => resolved
2022-02-22 22:19 c_schmitz Resolution open => fixed
2022-02-22 22:31 DenisChenu Changeset attached => LimeSurvey master 9c30e88d
2022-02-22 22:31 DenisChenu Note Added: 68368
2022-02-22 22:31 DenisChenu Assigned To galads => DenisChenu
2022-02-28 12:58 LimeBot Note Added: 68429
2022-02-28 12:58 LimeBot Status resolved => closed
2022-02-28 12:58 LimeBot Bug heat 2 => 4