View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
12161 | Bug reports | _ Unknown | public | 2017-02-28 17:44 | 2018-05-23 13:19 |
Reporter | fredcy | Assigned To | |||
Priority | none | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 2.62.x | ||||
Fixed in Version | 3.7.x | ||||
Summary | 12161: upgrading to 2.62.2 tries to touch files in templates folder, which are not writable | ||||
Description | With the 'debug' variable set to 2 in config.php, when I upgrade from version 2.57.0 to 2.62.2 I get a "PHP warning" page reporting the error "touch(): Utime failed: Permission denied". See attachment. The stack trace shows that the code was trying to touch files in the templates directory. Per standard installation instructions, that templates directory and contents are not writable by the web server and so the touch fails. | ||||
Steps To Reproduce | Set up limesurvey running 2.57.0 (or similar, I suppose). In config.php, set 'debug' variable to 2. Upgrade the limesurvey code to version 2.62.2. Visit the admin pages in the browser. | ||||
Additional Information | Per https://manual.limesurvey.org/Installation#Set_Directory_permissions, the templates directory is not one of the special directories that needs to be writable by the web server. | ||||
Tags | No tags attached. | ||||
Attached Files | PHP warning.html (27,479 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"> touch(): Utime failed: Permission denied </p> <div class="source"> <p class="file">/srv/www/survey/survey1/application/models/Template.php(322)</p> <div class="code"><pre><span class="ln">310</span> * Touch each directory in standard template directory to force assset manager to republish them <span class="ln">311</span> */ <span class="ln">312</span> public static function forceAssets() <span class="ln">313</span> { <span class="ln">314</span> // Don't touch symlinked assets because it won't work <span class="ln">315</span> if (App()->getAssetManager()->linkAssets) return; <span class="ln">316</span> $standardTemplatesPath = Yii::app()->getConfig("standardtemplaterootdir").DIRECTORY_SEPARATOR; <span class="ln">317</span> $Resource = opendir($standardTemplatesPath); <span class="ln">318</span> while ($Item = readdir($Resource)) <span class="ln">319</span> { <span class="ln">320</span> if (is_dir($standardTemplatesPath . $Item) && $Item != "." && $Item != "..") <span class="ln">321</span> { <span class="error"><span class="ln error-ln">322</span> touch($standardTemplatesPath . $Item); </span><span class="ln">323</span> } <span class="ln">324</span> } <span class="ln">325</span> } <span class="ln">326</span> } </pre></div> </div> <div class="traces"> <h2>Stack Trace</h2> <table style="width:100%;"> <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> /srv/www/survey/survey1/application/models/Template.php(322): <strong>touch</strong>("/srv/www/survey/survey1/templates/ubuntu_orange") </div> <div class="code"><pre><span class="ln">317</span> $Resource = opendir($standardTemplatesPath); <span class="ln">318</span> while ($Item = readdir($Resource)) <span class="ln">319</span> { <span class="ln">320</span> if (is_dir($standardTemplatesPath . $Item) && $Item != "." && $Item != "..") <span class="ln">321</span> { <span class="error"><span class="ln error-ln">322</span> touch($standardTemplatesPath . $Item); </span><span class="ln">323</span> } <span class="ln">324</span> } <span class="ln">325</span> } <span class="ln">326</span> } </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> /srv/www/survey/survey1/application/models/UpdateForm.php(377): <strong>Template</strong>::<strong>forceAssets</strong>() </div> <div class="code"><pre><span class="ln">372</span> { <span class="ln">373</span> // Don't touch symlinked assets because it won't work <span class="ln">374</span> if (App()->getAssetManager()->linkAssets) return; <span class="ln">375</span> <span class="ln">376</span> // Republish the assets <span class="error"><span class="ln error-ln">377</span> Template::model()->forceAssets(); </span><span class="ln">378</span> AdminTheme::forceAssets(); <span class="ln">379</span> <span class="ln">380</span> // Delete all the content in the asset directory, but not the directory itself nor the index.html file at its root ^^ <span class="ln">381</span> $sAssetsDir = Yii::app()->getConfig('tempdir') . '/assets/'; <span class="ln">382</span> $dir = dir($sAssetsDir); </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> /srv/www/survey/survey1/application/models/UpdateForm.php(589): <strong>UpdateForm</strong>-><strong>republishAssets</strong>() </div> <div class="code"><pre><span class="ln">584</span> $iAssetVersionNumber = Yii::app()->getConfig('assetsversionnumber'); // From version.php <span class="ln">585</span> $iCurrentAssetVersion = GetGlobalSetting('AssetsVersion'); // From setting_global table <span class="ln">586</span> <span class="ln">587</span> if ( $iAssetVersionNumber != $iCurrentAssetVersion ) <span class="ln">588</span> { <span class="error"><span class="ln error-ln">589</span> self::republishAssets(); </span><span class="ln">590</span> setGlobalSetting('AssetsVersion',$iAssetVersionNumber); <span class="ln">591</span> App()->getController()->redirect(array("admin/")); <span class="ln">592</span> } <span class="ln">593</span> return false; <span class="ln">594</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> /srv/www/survey/survey1/application/models/UpdateForm.php(607): <strong>UpdateForm</strong>-><strong>checkAssets</strong>() </div> <div class="code"><pre><span class="ln">602</span> * @access protected <span class="ln">603</span> * @return mixed <span class="ln">604</span> */ <span class="ln">605</span> public function getUpdateNotification() <span class="ln">606</span> { <span class="error"><span class="ln error-ln">607</span> $this->checkAssets(); </span><span class="ln">608</span> if(Yii::app()->getConfig('updatable') && Permission::model()->hasGlobalPermission('superadmin') ) <span class="ln">609</span> { <span class="ln">610</span> $today = new DateTime("now"); <span class="ln">611</span> $next_update_check = Yii::app()->session['next_update_check']; <span class="ln">612</span> </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> /srv/www/survey/survey1/framework/base/CComponent.php(111): <strong>UpdateForm</strong>-><strong>getUpdateNotification</strong>() </div> <div class="code"><pre><span class="ln">106</span> */ <span class="ln">107</span> public function __get($name) <span class="ln">108</span> { <span class="ln">109</span> $getter='get'.$name; <span class="ln">110</span> if(method_exists($this,$getter)) <span class="error"><span class="ln error-ln">111</span> return $this->$getter(); </span><span class="ln">112</span> elseif(strncasecmp($name,'on',2)===0 && method_exists($this,$name)) <span class="ln">113</span> { <span class="ln">114</span> // duplicating getEventHandlers() here for performance <span class="ln">115</span> $name=strtolower($name); <span class="ln">116</span> if(!isset($this->_e[$name])) </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> /srv/www/survey/survey1/application/core/Survey_Common_Action.php(541): <strong>CComponent</strong>-><strong>__get</strong>("updateNotification") </div> <div class="code"><pre><span class="ln">536</span> <span class="ln">537</span> $aData['dataForConfigMenu']['activetokens'] = $activetokens; <span class="ln">538</span> $aData['sitename'] = Yii::app()->getConfig("sitename"); <span class="ln">539</span> <span class="ln">540</span> $updateModel = new UpdateForm(); <span class="error"><span class="ln error-ln">541</span> $updateNotification = $updateModel->updateNotification; </span><span class="ln">542</span> $aData['showupdate'] = Yii::app()->getConfig('updatable') && $updateNotification->result && ! $updateNotification->unstable_update ; <span class="ln">543</span> <span class="ln">544</span> // Fetch extra menus from plugins, e.g. last visited surveys <span class="ln">545</span> $aData['extraMenus'] = $this->fetchExtraMenus($aData); <span class="ln">546</span> </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> /srv/www/survey/survey1/application/core/Survey_Common_Action.php(247): <strong>Survey_Common_Action</strong>-><strong>_showadminmenu</strong>(array("issuperadmin" => true, "showLastSurvey" => true, "surveyTitle" => "Test FCY survey(ID:24887)", "surveyUrl" => "/index.php?r=admin/survey/sa/view/surveyid/24887", ...)) </div> <div class="code"><pre><span class="ln">242</span> <span class="ln">243</span> <span class="ln">244</span> ob_start(); //// That was used before the MVC pattern, in procedural code. Will not be used anymore. <span class="ln">245</span> <span class="ln">246</span> $this->_showHeaders($aData); //// THe headers will be called from the layout <span class="error"><span class="ln error-ln">247</span> $this->_showadminmenu($aData); //// The admin menu will be called from the layout, probably as a widget for dynamic content. </span><span class="ln">248</span> $this->_userGroupBar($aData); <span class="ln">249</span> <span class="ln">250</span> //// Here will start the rendering from the controller of the main view. <span class="ln">251</span> //// For example, the Group controller will use the main.php layout, and then render the view list_group.php <span class="ln">252</span> //// This view will call as a subview the questiongroupbar, and then _listquestiongroup subview. </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> /srv/www/survey/survey1/application/controllers/admin/index.php(93): <strong>Survey_Common_Action</strong>-><strong>_renderWrappedTemplate</strong>("super", "welcome", array("issuperadmin" => true, "showLastSurvey" => true, "surveyTitle" => "Test FCY survey(ID:24887)", "surveyUrl" => "/index.php?r=admin/survey/sa/view/surveyid/24887", ...)) </div> <div class="code"><pre><span class="ln">88</span> $aData['bShowLogo'] = (getGlobalSetting('show_logo')=="show"); <span class="ln">89</span> $aData['oSurveySearch'] = new Survey('search'); <span class="ln">90</span> $aData['bShowLastSurveyAndQuestion'] = (getGlobalSetting('show_last_survey_and_question')=="show"); <span class="ln">91</span> $aData['iBoxesByRow']=(int) getGlobalSetting('boxes_by_row'); <span class="ln">92</span> $aData['sBoxesOffSet']=(string) getGlobalSetting('boxes_offset'); <span class="error"><span class="ln error-ln">93</span> $this->_renderWrappedTemplate('super', 'welcome', $aData); </span><span class="ln">94</span> } <span class="ln">95</span> <span class="ln">96</span> } </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #8 </td> <td class="content"> <div class="trace-file"> unknown(0): <strong>Index</strong>-><strong>run</strong>() </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> /srv/www/survey/survey1/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-><strong>invokeArgs</strong>(Index, array()) </div> <div class="code"><pre><span class="ln">104</span> elseif($param->isDefaultValueAvailable()) <span class="ln">105</span> $ps[]=$param->getDefaultValue(); <span class="ln">106</span> else <span class="ln">107</span> return false; <span class="ln">108</span> } <span class="error"><span class="ln error-ln">109</span> $method->invokeArgs($object,$ps); </span><span class="ln">110</span> return true; <span class="ln">111</span> } <span class="ln">112</span> } </pre></div> </td> </tr> <tr class="trace app collapsed"> <td class="number"> #10 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/application/core/Survey_Common_Action.php(101): <strong>CAction</strong>-><strong>runWithParamsInternal</strong>(Index, ReflectionMethod, array("r" => "admin")) </div> <div class="code"><pre><span class="ln">096</span> $oMethod = new ReflectionMethod($this, $sDefault); <span class="ln">097</span> } <span class="ln">098</span> <span class="ln">099</span> // We're all good to go, let's execute it <span class="ln">100</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">101</span> return parent::runWithParamsInternal($this, $oMethod, $params); </span><span class="ln">102</span> } <span class="ln">103</span> <span class="ln">104</span> /** <span class="ln">105</span> * Some functions have different parameters, which are just an alias of the <span class="ln">106</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"> #11 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-><strong>runWithParams</strong>(array("r" => "admin")) </div> <div class="code"><pre><span class="ln">303</span> { <span class="ln">304</span> $priorAction=$this->_action; <span class="ln">305</span> $this->_action=$action; <span class="ln">306</span> if($this->beforeAction($action)) <span class="ln">307</span> { <span class="error"><span class="ln error-ln">308</span> if($action->runWithParams($this->getActionParams())===false) </span><span class="ln">309</span> $this->invalidActionParams($action); <span class="ln">310</span> else <span class="ln">311</span> $this->afterAction($action); <span class="ln">312</span> } <span class="ln">313</span> $this->_action=$priorAction; </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #12 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/framework/web/CController.php(286): <strong>CController</strong>-><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->runAction($action); </span><span class="ln">287</span> else <span class="ln">288</span> { <span class="ln">289</span> $priorAction=$this->_action; <span class="ln">290</span> $this->_action=$action; <span class="ln">291</span> CFilterChain::create($this,$action,$filters)->run(); </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #13 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/framework/web/CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>(Index, array()) </div> <div class="code"><pre><span class="ln">260</span> { <span class="ln">261</span> if(($parent=$this->getModule())===null) <span class="ln">262</span> $parent=Yii::app(); <span class="ln">263</span> if($parent->beforeControllerAction($this,$action)) <span class="ln">264</span> { <span class="error"><span class="ln error-ln">265</span> $this->runActionWithFilters($action,$this->filters()); </span><span class="ln">266</span> $parent->afterControllerAction($this,$action); <span class="ln">267</span> } <span class="ln">268</span> } <span class="ln">269</span> else <span class="ln">270</span> $this->missingAction($actionID); </pre></div> </td> </tr> <tr class="trace app collapsed"> <td class="number"> #14 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/application/controllers/AdminController.php(177): <strong>CController</strong>-><strong>run</strong>("") </div> <div class="code"><pre><span class="ln">172</span> $this->redirect(array('/admin/authentication/sa/login')); <span class="ln">173</span> } <span class="ln">174</span> <span class="ln">175</span> } <span class="ln">176</span> <span class="error"><span class="ln error-ln">177</span> return parent::run($action); </span><span class="ln">178</span> } <span class="ln">179</span> <span class="ln">180</span> /** <span class="ln">181</span> * Routes all the actions to their respective places <span class="ln">182</span> * </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> /srv/www/survey/survey1/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-><strong>run</strong>("") </div> <div class="code"><pre><span class="ln">277</span> { <span class="ln">278</span> list($controller,$actionID)=$ca; <span class="ln">279</span> $oldController=$this->_controller; <span class="ln">280</span> $this->_controller=$controller; <span class="ln">281</span> $controller->init(); <span class="error"><span class="ln error-ln">282</span> $controller->run($actionID); </span><span class="ln">283</span> $this->_controller=$oldController; <span class="ln">284</span> } <span class="ln">285</span> else <span class="ln">286</span> throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".', <span class="ln">287</span> array('{route}'=>$route===''?$this->defaultController:$route))); </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #16 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>("admin") </div> <div class="code"><pre><span class="ln">136</span> foreach(array_splice($this->catchAllRequest,1) as $name=>$value) <span class="ln">137</span> $_GET[$name]=$value; <span class="ln">138</span> } <span class="ln">139</span> else <span class="ln">140</span> $route=$this->getUrlManager()->parseUrl($this->getRequest()); <span class="error"><span class="ln error-ln">141</span> $this->runController($route); </span><span class="ln">142</span> } <span class="ln">143</span> <span class="ln">144</span> /** <span class="ln">145</span> * Registers the core application components. <span class="ln">146</span> * This method overrides the parent implementation by registering additional core components. </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #17 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-><strong>processRequest</strong>() </div> <div class="code"><pre><span class="ln">180</span> public function run() <span class="ln">181</span> { <span class="ln">182</span> if($this->hasEventHandler('onBeginRequest')) <span class="ln">183</span> $this->onBeginRequest(new CEvent($this)); <span class="ln">184</span> register_shutdown_function(array($this,'end'),0,false); <span class="error"><span class="ln error-ln">185</span> $this->processRequest(); </span><span class="ln">186</span> if($this->hasEventHandler('onEndRequest')) <span class="ln">187</span> $this->onEndRequest(new CEvent($this)); <span class="ln">188</span> } <span class="ln">189</span> <span class="ln">190</span> /** </pre></div> </td> </tr> <tr class="trace app collapsed"> <td class="number"> #18 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /srv/www/survey/survey1/index.php(214): <strong>CApplication</strong>-><strong>run</strong>() </div> <div class="code"><pre><span class="ln">209</span> die (sprintf('%s should be writable by the webserver (766 or 776).', $sDefaultRuntimePath)); <span class="ln">210</span> } <span class="ln">211</span> } <span class="ln">212</span> <span class="ln">213</span> Yii::$enableIncludePath = false; <span class="error"><span class="ln error-ln">214</span> Yii::createApplication('LSYii_Application', $config)->run(); </span><span class="ln">215</span> <span class="ln">216</span> /* End of file index.php */ <span class="ln">217</span> /* Location: ./index.php */ </pre></div> </td> </tr> </table> </div> <div class="version"> 2017-02-28 10:37:19 Apache/2.2.15 (Red Hat) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.17 </div> </div> <script type="text/javascript"> /*<![CDATA[*/ var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)"); var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)"); var e = document.getElementsByTagName("div"); for(var j=0,len=e.length;j<len;j++){ if(traceReg.test(e[j].className)){ e[j].onclick = function(){ var trace = this.parentNode.parentNode; if(collapsedReg.test(trace.className)) trace.className = trace.className.replace("collapsed", "expanded"); else trace.className = trace.className.replace("expanded", "collapsed"); } } } /*]]>*/ </script> </body> </html> | ||||
Bug heat | 4 | ||||
Complete LimeSurvey version number (& build) | 2.62.2 | ||||
I will donate to the project if issue is resolved | No | ||||
Browser | |||||
Database type & version | MySQL 5.5.54 | ||||
Server OS (if known) | RHEL 6.8 | ||||
Webserver software & version (if known) | Apache 2.2.15 | ||||
PHP Version | 5.4.45 | ||||
that's the wanted behaviour. If you want to use comfortUpdate, you must change permissions before the update. Then you're free to put them back to their initial state after the update. |
|
I was not using "comfort update". I updated the code via git-fetch and git-checkout. |
|
then I can close the bug report |
|
I don't follow how my not using comfort update makes this a non-issue. I get fatal errors during an upgrade if the debug flag happens to be set to 2. My file permissions are set as directed by the documents. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2017-02-28 17:44 | fredcy | New Issue | |
2017-02-28 17:44 | fredcy | File Added: PHP warning.html | |
2017-03-07 11:31 | c_schmitz | Assigned To | => LouisGac |
2017-03-07 11:31 | c_schmitz | Status | new => assigned |
2017-03-07 12:05 |
|
Note Added: 43186 | |
2017-03-08 03:08 | fredcy | Note Added: 43207 | |
2017-03-08 11:00 |
|
Note Added: 43215 | |
2017-03-08 22:52 | fredcy | Note Added: 43238 | |
2018-05-23 13:19 |
|
Status | assigned => closed |
2018-05-23 13:19 |
|
Resolution | open => fixed |
2018-05-23 13:19 |
|
Fixed in Version | => 3.7.x |