View Issue Details

This bug affects 1 person(s).
 14
IDProjectCategoryView StatusLast Update
20085Bug reportsPluginspublic2025-05-06 11:54
ReporterDenisChenu Assigned ToDenisChenu  
PrioritynoneSeverityminor 
Status closedResolutionfixed 
Product Version6.6.x 
Summary20085: Debug 2, PHP8.3 : unable to upload valid plugin
Description

When debug is set, upload a zip file throw a PHP error deprected

Steps To Reproduce

Steps to reproduce

Set debug = 1
Check PHP version 8.3 or up
Try to upload https://dl.sondages.pro/toolsDomDocument.zip

Expected result

Plugin uploaded

Actual result

PHP error

TagsNo tags attached.
Attached Files
PHP error.html (25,744 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" data-lt-installed="true"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP error</title>

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

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

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

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

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

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

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

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

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

.container {
	margin: 1em 4em;
}

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

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

.source {
	margin-bottom: 1em;
}

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

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

.traces {
	margin: 2em 0;
}

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

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

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

.trace .content {
	padding: 0.5em;
}

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

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

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

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

<body>
<div class="container">
	<h1>PHP error</h1>

	<p class="message">
		ZipArchive::open(): Passing null to parameter #2 ($flags) of type int is deprecated	</p>

	<div class="source">
		<p class="file">/media/shnoulle/data/webdev/noplugin/application/libraries/Zip.php(19)</p>
		<div class="code"><pre><span class="ln">07</span>  */
<span class="ln">08</span> class Zip extends \ZipArchive
<span class="ln">09</span> {
<span class="ln">10</span>     protected $opened = false;
<span class="ln">11</span> 
<span class="ln">12</span>     /**
<span class="ln">13</span>      * @inheritdoc
<span class="ln">14</span>      * @param bool $checkZipBomb If true, check for Zip Bombing
<span class="ln">15</span>      */
<span class="ln">16</span>     #[\ReturnTypeWillChange]
<span class="ln">17</span>     public function open($filename, $flags = 0, $checkZipBomb = true)
<span class="ln">18</span>     {
<span class="error"><span class="ln error-ln">19</span>         $result = parent::open($filename, $flags);
</span><span class="ln">20</span>         $this-&gt;opened = ($result === true);
<span class="ln">21</span>         if ($result === true &amp;&amp; $checkZipBomb &amp;&amp; $this-&gt;isZipBomb()) {
<span class="ln">22</span>             throw new \Exception("Unzipped file is bigger than upload_max_filesize or post_max_size");
<span class="ln">23</span>         }
<span class="ln">24</span>         return $result;
<span class="ln">25</span>     }
<span class="ln">26</span> 
<span class="ln">27</span>     /**
<span class="ln">28</span>      * @inheritdoc
<span class="ln">29</span>      */
<span class="ln">30</span>     public function close() : bool
<span class="ln">31</span>     {
</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;/media/shnoulle/data/webdev/noplugin/application/libraries/Zip.php(19): <strong>ZipArchive</strong>-&gt;<strong>open</strong>("toolsDomDocument.zip", null)				</div>

				<div class="code"><pre><span class="ln">14</span>      * @param bool $checkZipBomb If true, check for Zip Bombing
<span class="ln">15</span>      */
<span class="ln">16</span>     #[\ReturnTypeWillChange]
<span class="ln">17</span>     public function open($filename, $flags = 0, $checkZipBomb = true)
<span class="ln">18</span>     {
<span class="error"><span class="ln error-ln">19</span>         $result = parent::open($filename, $flags);
</span><span class="ln">20</span>         $this-&gt;opened = ($result === true);
<span class="ln">21</span>         if ($result === true &amp;&amp; $checkZipBomb &amp;&amp; $this-&gt;isZipBomb()) {
<span class="ln">22</span>             throw new \Exception("Unzipped file is bigger than upload_max_filesize or post_max_size");
<span class="ln">23</span>         }
<span class="ln">24</span>         return $result;
</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;/media/shnoulle/data/webdev/noplugin/application/helpers/common_helper.php(4999): <strong>LimeSurvey\Zip</strong>-&gt;<strong>open</strong>("toolsDomDocument.zip", null, false)				</div>

				<div class="code"><pre><span class="ln">4994</span>  */
<span class="ln">4995</span> function isZipBomb($zip_filename)
<span class="ln">4996</span> {
<span class="ln">4997</span>     $isZipBomb = false;
<span class="ln">4998</span>     $zip = new LimeSurvey\Zip();
<span class="error"><span class="ln error-ln">4999</span>     if ($zip-&gt;open($zip_filename, null, false) === true) {
</span><span class="ln">5000</span>         $isZipBomb = $zip-&gt;isZipBomb();
<span class="ln">5001</span>         $zip-&gt;close();
<span class="ln">5002</span>     }
<span class="ln">5003</span>     return $isZipBomb;
<span class="ln">5004</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/application/libraries/ExtensionInstaller/FileFetcherUploadZip.php(213): <strong>isZipBomb</strong>("toolsDomDocument.zip")				</div>

				<div class="code"><pre><span class="ln">208</span>      */
<span class="ln">209</span>     protected function checkZipBomb()
<span class="ln">210</span>     {
<span class="ln">211</span>         // Check zip bomb.
<span class="ln">212</span>         \Yii::import('application.helpers.common_helper', true);
<span class="error"><span class="ln error-ln">213</span>         if (isZipBomb($_FILES['the_file']['name'])) {
</span><span class="ln">214</span>             throw new Exception(gT('Unzipped file is too big.'));
<span class="ln">215</span>         }
<span class="ln">216</span>     }
<span class="ln">217</span> 
<span class="ln">218</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;/media/shnoulle/data/webdev/noplugin/application/libraries/ExtensionInstaller/FileFetcherUploadZip.php(227): <strong>LimeSurvey\ExtensionInstaller\FileFetcherUploadZip</strong>-&gt;<strong>checkZipBomb</strong>()				</div>

				<div class="code"><pre><span class="ln">222</span>     protected function extractZipFile($tempdir)
<span class="ln">223</span>     {
<span class="ln">224</span>         \Yii::import('application.helpers.common_helper', true);
<span class="ln">225</span> 
<span class="ln">226</span>         /** @todo: Move this after checking if the file exists? */
<span class="error"><span class="ln error-ln">227</span>         $this-&gt;checkZipBomb();
</span><span class="ln">228</span> 
<span class="ln">229</span>         if (!is_file($_FILES['the_file']['tmp_name'])) {
<span class="ln">230</span>             throw new Exception(
<span class="ln">231</span>                 gT("An error occurred uploading your file. This may be caused by incorrect permissions for the application /tmp folder.")
<span class="ln">232</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;/media/shnoulle/data/webdev/noplugin/application/libraries/ExtensionInstaller/FileFetcherUploadZip.php(45): <strong>LimeSurvey\ExtensionInstaller\FileFetcherUploadZip</strong>-&gt;<strong>extractZipFile</strong>("/media/shnoulle/data/webdev/noplugin/tmp/install_tFcsZH4zhqzIh5U...")				</div>

				<div class="code"><pre><span class="ln">40</span>      */
<span class="ln">41</span>     public function fetch()
<span class="ln">42</span>     {
<span class="ln">43</span>         $this-&gt;checkFileSizeError();
<span class="ln">44</span>         $this-&gt;clearTmpdir();
<span class="error"><span class="ln error-ln">45</span>         $this-&gt;extractZipFile($this-&gt;getTempdir());
</span><span class="ln">46</span>     }
<span class="ln">47</span> 
<span class="ln">48</span>     /**
<span class="ln">49</span>      * Move files from tempdir to final destdir.
<span class="ln">50</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;/media/shnoulle/data/webdev/noplugin/application/libraries/ExtensionInstaller/ExtensionInstaller.php(51): <strong>LimeSurvey\ExtensionInstaller\FileFetcherUploadZip</strong>-&gt;<strong>fetch</strong>()				</div>

				<div class="code"><pre><span class="ln">46</span>     {
<span class="ln">47</span>         if (empty($this-&gt;fileFetcher)) {
<span class="ln">48</span>             throw new InvalidArgumentException('fileFetcher is not set');
<span class="ln">49</span>         }
<span class="ln">50</span> 
<span class="error"><span class="ln error-ln">51</span>         $this-&gt;fileFetcher-&gt;fetch();
</span><span class="ln">52</span>     }
<span class="ln">53</span> 
<span class="ln">54</span> 
<span class="ln">55</span>     /**
<span class="ln">56</span>      * Get the configuration from temp dir.
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/application/controllers/admin/PluginManagerController.php(520): <strong>LimeSurvey\ExtensionInstaller\ExtensionInstaller</strong>-&gt;<strong>fetchFiles</strong>()				</div>

				<div class="code"><pre><span class="ln">515</span>         $this-&gt;checkDemoMode();
<span class="ln">516</span> 
<span class="ln">517</span>         $installer = $this-&gt;getInstaller();
<span class="ln">518</span> 
<span class="ln">519</span>         try {
<span class="error"><span class="ln error-ln">520</span>             $installer-&gt;fetchFiles();
</span><span class="ln">521</span>             $this-&gt;getController()-&gt;redirect($this-&gt;getPluginManagerUrl('uploadConfirm'));
<span class="ln">522</span>         } catch (Exception $ex) {
<span class="ln">523</span>             $installer-&gt;abort();
<span class="ln">524</span>             $this-&gt;errorAndRedirect(gT('Could not fetch files.') . ' ' . $ex-&gt;getMessage());
<span class="ln">525</span>         }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>PluginManagerController</strong>-&gt;<strong>upload</strong>()				</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;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/actions/CAction.php(114): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(PluginManagerController, array())				</div>

				<div class="code"><pre><span class="ln">109</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">110</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">111</span>             else
<span class="ln">112</span>                 return false;
<span class="ln">113</span>         }
<span class="error"><span class="ln error-ln">114</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">115</span>         return true;
<span class="ln">116</span>     }
<span class="ln">117</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/application/core/SurveyCommonAction.php(83): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(PluginManagerController,
 ReflectionMethod, array("r" =&gt; "admin/pluginmanager", "sa" =&gt; 
"upload", "sAction" =&gt; "templateupload"))				</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 collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/CController.php(308): <strong>SurveyCommonAction</strong>-&gt;<strong>runWithParams</strong>(array("r" =&gt; "admin/pluginmanager", "sa" =&gt; "upload", "sAction" =&gt; "templateupload"))				</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">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(PluginManagerController)				</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">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(PluginManagerController, array())				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/application/controllers/AdminController.php(204): <strong>CController</strong>-&gt;<strong>run</strong>("pluginmanager")				</div>

				<div class="code"><pre><span class="ln">199</span>         $this-&gt;runModuleController($action);
<span class="ln">200</span>         // this will redirect the default action to the new controller previously "admin/index" or "admin" to "dashboard/view"
<span class="ln">201</span>         if (empty($action) || $action === 'index') {
<span class="ln">202</span>             $this-&gt;redirect($this-&gt;createUrl('dashboard/view'));
<span class="ln">203</span>         }
<span class="error"><span class="ln error-ln">204</span>         return parent::run($action);
</span><span class="ln">205</span>     }
<span class="ln">206</span> 
<span class="ln">207</span>     /**
<span class="ln">208</span>      * Starting with LS4, 3rd party developer can extends any of the LimeSurve controllers.
<span class="ln">209</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("pluginmanager")				</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">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/pluginmanager")				</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">
				#16			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/vendor/yiisoft/yii/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">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/noplugin/index.php(161): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">156</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">157</span> 
<span class="ln">158</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">159</span> 
<span class="ln">160</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">161</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">162</span> 
<span class="ln">163</span> /* End of file index.php */
<span class="ln">164</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2025-05-05 07:05:26 nginx/1.22.1 <a href="https://www.yiiframework.com/">Yii Framework</a>/1.1.30	</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>
PHP error.html (25,744 bytes)   
Bug heat14
Complete LimeSurvey version number (& build)6.13.0
I will donate to the project if issue is resolvedNo
Browsernot relevant
Database type & versionnot relevant
Server OS (if known)debian
Webserver software & version (if known)nginx
PHP VersionPHP Version 8.3.20

Relationships

has duplicate 20048 resolvedtibor.pacalat Question theme import crashes 

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2025-05-05 09:13

developer   ~82562

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

DenisChenu

DenisChenu

2025-05-05 13:21

developer   ~82563

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

LimeBot

LimeBot

2025-05-06 11:54

administrator   ~82575

Fixed in Release 6.13.2+250506

Related Changesets

LimeSurvey: master fc171f74

2025-05-05 13:21

DenisChenu

Committer: GitHub


Details Diff
Fixed issue 20085: Debug 2, PHP8.3 : unable to upload valid plugin (#4261) Affected Issues
20085
mod - application/helpers/common_helper.php Diff File

Issue History

Date Modified Username Field Change
2025-05-05 09:09 DenisChenu New Issue
2025-05-05 09:09 DenisChenu File Added: PHP error.html
2025-05-05 09:09 DenisChenu Assigned To => DenisChenu
2025-05-05 09:09 DenisChenu Status new => assigned
2025-05-05 09:13 DenisChenu Assigned To DenisChenu => gabrieljenik
2025-05-05 09:13 DenisChenu Note Added: 82562
2025-05-05 09:13 DenisChenu Bug heat 0 => 2
2025-05-05 09:13 DenisChenu Status assigned => ready for code review
2025-05-05 13:21 DenisChenu Changeset attached => LimeSurvey master fc171f74
2025-05-05 13:21 DenisChenu Note Added: 82563
2025-05-05 13:21 DenisChenu Assigned To gabrieljenik => DenisChenu
2025-05-05 13:21 DenisChenu Status ready for code review => resolved
2025-05-05 13:21 DenisChenu Resolution open => fixed
2025-05-05 18:57 DenisChenu Relationship added has duplicate 20048
2025-05-05 18:57 DenisChenu Bug heat 2 => 12
2025-05-06 11:54 LimeBot Note Added: 82575
2025-05-06 11:54 LimeBot Status resolved => closed
2025-05-06 11:54 LimeBot Bug heat 12 => 14