View Issue Details

IDProjectCategoryView StatusLast Update
15565Bug reportsSurvey takingpublic2019-11-18 13:53
ReporterDenisChenu Assigned ToDenisChenu  
PrioritynoneSeverityminor 
Status closedResolutionfixed 
Product Version3.20.x 
Fixed in Version3.20.x 
Summary15565: Upload file : debug 2 : potential issue
Description

When i try to upload a csv file (a vv file) to check another issue i receive an error.
Maybe related to PHP version …

Steps To Reproduce

Find a PHP version 7.3 maybe
Import inclided survey ,n activate
Set debug at 2
Launch survey and try

Additional Information

And in this condition
I have another issue for csv file after (without debug)

TagsNo tags attached.
Complete LimeSurvey version number (& build)3.20.0
I will donate to the project if issue is resolvedNo
Browsernot relevant ?
Database & DB-Versionnot relevant?
Server OS (if known)fedora/linux
Webserver software & version (if known)nginx
PHP Version7.3.11 libmagic 533

Activities

DenisChenu

DenisChenu

2019-11-14 18:37

developer  

vvexport_151625-1.csv (11,847 bytes)   
ID de la réponse	token	Date de soumission	Dernière page	Langue de départ	Tête de série	Date de lancement	Date de la dernière action	State	General comments	Proposal date :	PO OECD date :	OECD PO order number	Project numbers in SondagesPro	Project numbers in SondagesPro	Project numbers in SondagesPro	Sondages Pro premilinary notes	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of proposal	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Detail of price	Total price : {sum(that.PriceDetail.NAOK)}	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Contact at OECD for Proposal and Bill	Sondages Pro notes	Files annex	filecount - Files annex
id	token	submitdate	lastpage	startlanguage	seed	startdate	datestamp	State	Comments	PRDate	POOECDDate	POOECD	SondagesProId_PR	SondagesProId_CO	SondagesProId_FA	PreliminaryNote	DetailComment_L01	DetailComment_L02	DetailComment_L03	DetailComment_L04	DetailComment_L05	DetailComment_L06	DetailComment_L07	DetailComment_L08	DetailComment_L09	DetailComment_L10	DetailComment_L11	DetailComment_L12	DetailComment_L13	DetailComment_L14	DetailComment_L15	DetailComment_L16	PriceDetail_L01	PriceDetail_L02	PriceDetail_L03	PriceDetail_L04	PriceDetail_L05	PriceDetail_L06	PriceDetail_L07	PriceDetail_L08	PriceDetail_L09	PriceDetail_L10	PriceDetail_L11	PriceDetail_L12	PriceDetail_L13	PriceDetail_L14	PriceDetail_L15	PriceDetail_L16	PriceTotal	OECDcontact_Proposal_Name	OECDcontact_Proposal_email	OECDcontact_Bill_Name	OECDcontact_Bill_email	OECDcontact_Other01_Name	OECDcontact_Other01_email	OECDcontact_Other02_Name	OECDcontact_Other02_email	OECDcontact_Other03_Name	OECDcontact_Other03_email	OECDcontact_Other04_Name	OECDcontact_Other04_email	OECDcontact_Other05_Name	OECDcontact_Other05_email	OECDcontact_Other06_Name	OECDcontact_Other06_email	OECDcontact_Other07_Name	OECDcontact_Other07_email	Notes	Annex	Annex_filecount
41	5c4rB8WplObsas4	2019-11-06 09:39:06	1	en	2062948481	2019-10-31 07:24:12	2019-11-12 15:59:56	Propo		2019-10-31 00:00:00	{question_not_shown}					**Context**{cr}{newline}{cr}{newline}OECD want to use LimeSurvey for MAP system. MAP (Mutual Agreement Procedure) is a procedure under which two countries seek to resolve taxation that was potentially levied not in accordance with the tax treaty that they entered into.{cr}{newline}{cr}{newline}Each country must enter number of MAP with other country, number of closed MAP and new MAP during the year. Then informatin between 2 countries must be same for 2 questionnaire.{cr}{newline}{cr}{newline}To move to LimeSurvey, there are some feature needed :{cr}{newline}{cr}{newline}1. **Real time matching** (priority #1): For each pair of jurisdictions, specific data needs to match:{cr}{newline}    1. Participant (country) are allowed to submit not matched data, but need an information about unmatched data.{cr}{newline}    2. OECD team must have a tool to find the unmatched data and be allwoed to review it.{cr}{newline}2. **Computation features** (priority #2): Some data can be evaluate by other data and is used in the final work. This computation can be done directly inside one questionnaire.{cr}{newline}3. **Export features** (priority #3):{cr}{newline}    1. The data relating to treaty partners that do not belong to the list of reporting jurisdictions need to be aggregated under the “others” row{cr}{newline}    2. The data relating to treaty partners belonging to the list of reporting jurisdiction but with which a country has fewer than 5 cases need to be aggregated under the “de minimis” row{cr}{newline}4. **Multi-year tool** (priority #4) :{cr}{newline}    1. The questionnaire can be pre-filled by data from previous year{cr}{newline}    2. A country can have access to previous year data and information{cr}{newline}    3. A questionnaire must be open to add more information.{cr}{newline}{cr}{newline}Denis Chenu already produce different plugins used by OECD : responseListAndManage and questionExtraSurvey. Current proposition used this 2 plugins and add other plugins to offer a complete system.{cr}{newline}{cr}{newline}A quick sample of responseListAndManage is shown at [survey.oecd.org](https://survey.oecd.org/index.php?r=plugins/direct&plugin=responseListAndManage&sid=681199&&token=TEST). {cr}{newline}{cr}{newline}**About access restriction** : a token code is necessary to access to this system and open or edit MAP.  This token code is used to identify an user from a country or organisation, a country or organisation can have multiple user each identified by their own token. The data is saved on OECD server, administration access can be done only by OECD user, and specific data is restricted to some OECD user.	Plugin creation : one MAP by country (_priority #1_) (**dev1**){cr}{newline}{cr}{newline}- In survey with participant identified by tokens : allow to remove choice already done {cr}{newline}- Compatibility with organisation for reponseListAndmanage : replace by token.{cr}{newline}{cr}{newline}_Usage for related country in MAP questionnaires_{cr}{newline}{cr}{newline}3 development days at 600€	Plugin improvement : add global comparison by country (_priority #1_) (**dev2**){cr}{newline}{cr}{newline}- Survey settings to choose questions for related questionnaire{cr}{newline}- If survey as such settings : question attribute to add question to comparison{cr}{newline}- Allow to show the related value inside survey on a extra element.{cr}{newline}- Allow to have a question with the number of difference with related country{cr}{newline}{cr}{newline}5 development days at 600€{cr}{newline}{cr}{newline}_Need the previous part of the plugin (dev2a)_	Survey's creation (_priority #1 and #2_) (**survey1**){cr}{newline}{cr}{newline}- Creation of single MAP survey according to documents{cr}{newline}- Multipage questionnaire or single page{cr}{newline}- Add Computation features (by related country){cr}{newline}- - End of inventory, total number of cases, weighted average time ...{cr}{newline}- - mutual-agreement-procedure-statistics-reporting-framework.pdf{cr}{newline}- - Data to be matched list{cr}{newline}- Adaptation of survey after testing and validation{cr}{newline}- Adding one MAP by country system from previous plugins{cr}{newline}- - minimis and other can be choosen one time only{cr}{newline}- - each country can be choosen one time only{cr}{newline}- Adding relation system from previous plugin{cr}{newline}- Allow to prefill start value by know data{cr}{newline}- Survey adaptation after testing{cr}{newline}{cr}{newline}Flat rate	Prefilling and history plugin (_priority #4_) (**dev3**){cr}{newline}{cr}{newline}- Add a year question in survey{cr}{newline}- Restrict to current year on one Map by country plugin{cr}{newline}- Restrict to current year on comparison by country{cr}{newline}{cr}{newline}3 development days{cr}{newline}{cr}{newline}_Need the restriction plugin (dev2a and dev2b)_	History preview of survey (_priority #4_) (**dev4**){cr}{newline}{cr}{newline}- Allow to set previous questionnaire as archived (questionnaire done before a date){cr}{newline}- No way to update this questionnaire (using default LimeSurvey public system){cr}{newline}- Disable save action on movenext and move previous{cr}{newline}- Add automatically the full index on archived questionnaire{cr}{newline}- Allow to create a question for previous questionnaires listing :{cr}{newline}- - open survey in a new tab{cr}{newline}- - export survey in an existing export system{cr}{newline}{cr}{newline}3 development days{cr}{newline}{cr}{newline}_Need the previous development (dev3)_	Plugin development : Filtered export (_priority #3_) (**dev5**){cr}{newline}{cr}{newline}- Extend excel or CSV export by global option{cr}{newline}- Survey setting : auto filtered export by value a value question (single choice, or equation){cr}{newline}- When export : only export some lines according to selection (for MAP : don't export minimis and other) {cr}{newline}{cr}{newline}2 development days	Plugin improvement : Compiled export (_priority #3_) (**dev6**){cr}{newline}{cr}{newline}- On survey with filtered export, add question settings :{cr}{newline}- - compilation method : none, count, sum or average{cr}{newline}- When export : compile filtered data according to each question settings{cr}{newline}- Compilation by type (for MAP : minimis and other) {cr}{newline}{cr}{newline}5 development days	Plugin improvement : weighted average (_priority #3_) (**dev7**){cr}{newline}{cr}{newline}- Survey settings : allow to choose a numeric or equation question for weighting value{cr}{newline}- Question setting : add weighted average in compilation method{cr}{newline}- When export : weighted selected question by weighted data {cr}{newline}{cr}{newline}4 development days		{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	1800	3000	1600	1800	1800	1200	3000	2400	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	{question_not_shown}	16600	Félicie BONNET	Felicie.BONNET@oecd.org			Samuel PINTORIBEIRO	Samuel.PINTORIBEIRO@oecd.org	Sandra KNAEPEN	Sandra.KNAEPEN@oecd.org											**Specific development delay** :  {cr}{newline}{cr}{newline}- Public survey part : _dev1_, _dev2_ and _survey1_ delay is one month after reception of data, and can start on December to have a tested and validated system during January{cr}{newline}- Export filter system : _dev5_, _dev6_ and _dev7_ delay can start in January, have a complete and checked system can take 2 month{cr}{newline}- Multi year system : _dev3_ and _dev4_ delay can start in January, have a complete and checked system can take 1 month{cr}{newline}{cr}{newline}The warranty on developments is one (1) month after delivery and acceptance. The warranty does not include updates to the software, housing conditions and possible failures related to this accommodation. The compatibility of plugins with updates of the official version LimeSurvey software is guaranteed twelve (12) months.{cr}{newline}{cr}{newline}Development are Copyright Denis Chenu / OECD and distributed under the GPLv3 license. This license does not apply to survey contents, graphics, visual identity, graphic charter or calculation methods that remain the full property of the client.{cr}{newline}{cr}{newline}Code under open source license can be published by Denis Chenu on the various repo management websites,on his own websites and on any other website. In this case, unless otherwise specified, the client's name will be mentioned in the copyright.	"[{lbrace} ""title"":""R4IO new offer"",""comment"":"""",""size"":""28.7919921875"",""name"":""PR1910-0570.pdf"",""filename"":""fu_ua3j3fdq9t3swwv"",""ext"":""pdf"" }]"	1
vvexport_151625-1.csv (11,847 bytes)   
index-PHPwarning.html (17,928 bytes)   
<!DOCTYPE html>
<html dir="ltr" class="js en dir-ltr" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/superfish.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/font-awesome.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/survey.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/noto.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/skelvanilla.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/hideemptycolumn.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/uploader.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/uploader-files.css">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/bootstrap.css" media="screen">
<link rel="stylesheet" type="text/css" href="index-PHPwarning_fichiers/yiistrap.css" media="screen">
<script type="text/javascript">window.debugState = {frontend : (0 === 1), backend : (0 === 1)};</script><script type="text/javascript" src="index-PHPwarning_fichiers/jquery-3.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/jquery-migrate-3.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/jquery-ui.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/superfish.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/hoverIntent.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/moment-with-locales.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/survey.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/template-core.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/bootstrap.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/bootstrapconfirm.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/lslog.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/pjax.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/custom.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/aria-live.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/theme-vanilla.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/skelvanilla.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/theme.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/ajaxupload.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/uploader.js" class="headScriptTag"></script>
<script type="text/javascript" src="index-PHPwarning_fichiers/nojs.js" class="headScriptTag"></script>
<script type="text/javascript">
/*<![CDATA[*/

            var uploadurl = "/master/index.php/uploader/index/mode/upload";
            var imageurl = "/master/assets/images/";
            var surveyid = "161396";
            var fieldname = "161396X986X17127";
            var questgrppreview  = 0;
            var csrfData = { "CSRF_LS_master":"eWZVMmZwbWZRTzZETEZyNlM3dlE2OXlXNEgxfnVxMkINZfTfzB4rACTV8D9Z3ulLf0aAFlWrTgcOo6RbtEyj6Q==" };
            showpopups="0";
        

                uploadLang = {
                     titleFld: 'Title',
                     commentFld: 'Comment',
                     errorNoMoreFiles: 'Sorry, no more files can be uploaded!',
                     errorOnlyAllowed: 'Sorry, only %s files can be uploaded for this question!',
                     uploading: 'Uploading',
                     selectfile: 'Select file',
                     errorNeedMore: 'Please upload %s more file(s).',
                     errorMoreAllowed: 'If you wish, you may upload %s more file(s); else you may return back to survey.',
                     errorMaxReached: 'The maximum number of files has been uploaded. You may return back to survey.',
                     errorTooMuch: 'The maximum number of files has been uploaded. You may return back to survey.',
                     errorNeedMoreConfirm: 'You need to upload %s more files for this question.\nAre you sure you want to exit?',
                     deleteFile : 'Delete',
                     editFile : 'Edit',
                    };
        
/*]]>*/
</script>
</head><body class="uploader">
<div class="container">
	<h1>PHP warning</h1>

	<p class="message">
		finfo_file(): Null byte in regex	</p>

	<div class="source">
		<p class="file">/mnt/data/shnoulle/nginx/www/master/framework/utils/CFileHelper.php(282)</p>
		<div class="code"><pre><span class="ln">270</span>      * PHP extension is available. This parameter has been available since version 1.1.3.
<span class="ln">271</span>      * @param boolean $checkExtension whether to check the file extension in case the MIME type cannot be determined
<span class="ln">272</span>      * based on finfo and mime_content_type. Defaults to true. This parameter has been available since version 1.1.4.
<span class="ln">273</span>      * @return string the MIME type. Null is returned if the MIME type cannot be determined.
<span class="ln">274</span>      */
<span class="ln">275</span>     public static function getMimeType($file,$magicFile=null,$checkExtension=true)
<span class="ln">276</span>     {
<span class="ln">277</span>         if(function_exists('finfo_open'))
<span class="ln">278</span>         {
<span class="ln">279</span>             $options=defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
<span class="ln">280</span>             $info=$magicFile===null ? finfo_open($options) : finfo_open($options,$magicFile);
<span class="ln">281</span> 
<span class="error"><span class="ln error-ln">282</span>             if($info &amp;&amp; ($result=finfo_file($info,$file))!==false)
</span><span class="ln">283</span>                 return $result;
<span class="ln">284</span>         }
<span class="ln">285</span> 
<span class="ln">286</span>         if(function_exists('mime_content_type') &amp;&amp; ($result=mime_content_type($file))!==false)
<span class="ln">287</span>             return $result;
<span class="ln">288</span> 
<span class="ln">289</span>         return $checkExtension ? self::getMimeTypeByExtension($file) : null;
<span class="ln">290</span>     }
<span class="ln">291</span> 
<span class="ln">292</span>     /**
<span class="ln">293</span>      * Determines the MIME type based on the extension name of the specified file.
<span class="ln">294</span>      * This method will use a local map between extension name and MIME type.
</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>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/framework/utils/CFileHelper.php(282): <strong>finfo_file</strong>(resource, "/tmp/phpzmYYCX")				</div>

				<div class="code"><pre><span class="ln">277</span>         if(function_exists('finfo_open'))
<span class="ln">278</span>         {
<span class="ln">279</span>             $options=defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
<span class="ln">280</span>             $info=$magicFile===null ? finfo_open($options) : finfo_open($options,$magicFile);
<span class="ln">281</span> 
<span class="error"><span class="ln error-ln">282</span>             if($info &amp;&amp; ($result=finfo_file($info,$file))!==false)
</span><span class="ln">283</span>                 return $result;
<span class="ln">284</span>         }
<span class="ln">285</span> 
<span class="ln">286</span>         if(function_exists('mime_content_type') &amp;&amp; ($result=mime_content_type($file))!==false)
<span class="ln">287</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;/mnt/data/shnoulle/nginx/www/master/application/core/LSFileHelper.php(71): <strong>CFileHelper</strong>::<strong>getMimeType</strong>("/tmp/phpzmYYCX", "/usr/share/misc/magic.mgc", true)				</div>

				<div class="code"><pre><span class="ln">66</span>             return $mimeType;
<span class="ln">67</span>         }
<span class="ln">68</span>         if(empty($magicFile) &amp;&amp; Yii::app()-&gt;getConfig('magic_database')) {
<span class="ln">69</span>             $magicFile = Yii::app()-&gt;getConfig('magic_database');
<span class="ln">70</span>         }
<span class="error"><span class="ln error-ln">71</span>         return parent::getMimeType($file,$magicFile,$checkExtension);
</span><span class="ln">72</span>     }
<span class="ln">73</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;/mnt/data/shnoulle/nginx/www/master/application/core/LSFileHelper.php(43): <strong>LSFileHelper</strong>::<strong>getMimeType</strong>("/tmp/phpzmYYCX")				</div>

				<div class="code"><pre><span class="ln">38</span>             $mimeTypes=require(Yii::getPathOfAlias('system.utils.fileExtensions').'.php');
<span class="ln">39</span>         }
<span class="ln">40</span>         elseif($magicFile!==null &amp;&amp; !isset($customMimeTypes[$magicFile])) {
<span class="ln">41</span>             $customMimeTypes[$magicFile]=require($magicFile);
<span class="ln">42</span>         }
<span class="error"><span class="ln error-ln">43</span>         $mime = self::getMimeType($file);
</span><span class="ln">44</span>         if($mime !== null) {
<span class="ln">45</span>             $mime=strtolower($mime);
<span class="ln">46</span>             if($magicFile===null &amp;&amp; isset($mimeTypes[$mime])) {
<span class="ln">47</span>                 return $mimeTypes[$mime];
<span class="ln">48</span>             } elseif($magicFile!==null &amp;&amp; isset($customMimeTypes[$magicFile][$mime])) {
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/application/controllers/UploaderController.php(180): <strong>LSFileHelper</strong>::<strong>getExtensionByMimeType</strong>("/tmp/phpzmYYCX", "/mnt/data/shnoulle/nginx/www/master/upload/fileExtensionsBis.php")				</div>

				<div class="code"><pre><span class="ln">175</span>                 //header('Content-Type: application/json');
<span class="ln">176</span>                 echo ls_json_encode($return);
<span class="ln">177</span>                 Yii::app()-&gt;end();
<span class="ln">178</span>             }
<span class="ln">179</span>             /* extension checked : check mimeType */
<span class="error"><span class="ln error-ln">180</span>             $extByMimeType = LSFileHelper::getExtensionByMimeType($_FILES['uploadfile']['tmp_name'], null);
</span><span class="ln">181</span>             $disableCheck = false;
<span class="ln">182</span>             if(is_null($extByMimeType)) {
<span class="ln">183</span>                 /* Lack of finfo_open or mime_content_type ? But can be a not found extension too.*/
<span class="ln">184</span>                 /* Check if can find mime type of favicon.ico , without extension */
<span class="ln">185</span>                 /* Use CFileHelper because sure it work with included */
</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>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/framework/web/CWebApplication.php(282): <strong>UploaderController</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">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("uploader/index/mode/upload/sid/161396/preview/0/fieldname/161396...")				</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">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/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">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/mnt/data/shnoulle/nginx/www/master/index.php(194): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

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

	<div class="version">
		2019-11-14 17:30:12 nginx/1.16.1 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.21	</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>
index-PHPwarning.html (17,928 bytes)   
DenisChenu

DenisChenu

2019-11-14 19:04

developer   ~54592

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

lime_release_bot

lime_release_bot

2019-11-18 13:53

administrator   ~54645

Fixed in Release 4.0.0-RC8+191118

Related Changesets

LimeSurvey: master c1cdf240

2019-11-14 19:03:44

DenisChenu

Details Diff
Fixed issue 15565: Upload file : debug 2 : potential issue
Dev: this don't disable the check, just the PHP core warnings
Dev: Fix issue when extension is not found
Affected Issues
15565
mod - application/controllers/UploaderController.php Diff File
mod - application/core/LSFileHelper.php Diff File

Issue History

Date Modified Username Field Change
2019-11-14 18:37 DenisChenu New Issue
2019-11-14 18:37 DenisChenu File Added: vvexport_151625-1.csv
2019-11-14 18:37 DenisChenu File Added: limesurvey_survey_checkUpload.lss
2019-11-14 18:37 DenisChenu File Added: index-PHPwarning.html
2019-11-14 18:39 DenisChenu Assigned To => DenisChenu
2019-11-14 18:39 DenisChenu Status new => assigned
2019-11-14 19:04 DenisChenu Changeset attached => LimeSurvey master c1cdf240
2019-11-14 19:04 DenisChenu Note Added: 54592
2019-11-14 19:04 DenisChenu Resolution open => fixed
2019-11-14 19:11 DenisChenu Status assigned => resolved
2019-11-14 19:11 DenisChenu Fixed in Version => 3.20.x
2019-11-18 13:53 lime_release_bot Note Added: 54645
2019-11-18 13:53 lime_release_bot Status resolved => closed