ソースを参照

- Checking memory_limit during the setup

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@415 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 15 年 前
コミット
312d644181
1 ファイル変更39 行追加1 行削除
  1. 39 1
      setup/index.php

+ 39 - 1
setup/index.php

@@ -13,6 +13,8 @@ define('SETUP_STRUCTURE_DATA_DIR', './data/structure');
 define('SETUP_SAMPLE_DATA_DIR', './data');
 define('PHP_MIN_VERSION', '5.2.0');
 define('MYSQL_MIN_VERSION', '5.0.0');
+define('MIN_MEMORY_LIMIT', 32*1024*1024);
+
 
 $sOperation = Utils::ReadParam('operation', 'step1');
 $oP = new SetupWebPage('iTop configuration wizard');
@@ -46,7 +48,41 @@ function GetTmpDir()
     }
 }
 
-
+/**
+ * Check the value of the PHP setting 'memory_limit'
+ * against the minimum recommended value
+ * @param SetpWebPage $oP The current web page
+ * @param integer $iMinMemoryRequired The minimum memory for the test to pass
+ * @return boolean Whether or not it's Ok to continue
+ */
+function CheckMemoryLimit(SetupWebPage $oP, $iMinMemoryRequired)
+{
+	$sMemoryLimit = trim(ini_get('memory_limit'));
+	$bResult = true;
+	if (empty($sMemoryLimit))
+	{
+		// On some PHP installations, memory_limit does not exist as a PHP setting!
+		// (encountered on a 5.2.0 under Windows)
+		// In that case, ini_set will not work, let's keep track of this and proceed anyway
+		$oP->warning("No memory limit has been defined in this instance of PHP");		
+	}
+	else
+	{
+		// Check that the limit will allow us to load the data
+		//
+		$iMemoryLimit = utils::ConvertToBytes($sMemoryLimit);
+		if ($iMemoryLimit < $iMinMemoryRequired)
+		{
+			$oP->error("memory_limit ($iMemoryLimit) is too small, the minimum value to run iTop is $iMinMemoryRequired.");		
+			$bResult = false;
+		}
+		else
+		{
+			$oP->log_info("memory_limit is $iMemoryLimit, ok.");		
+		}
+	}
+	return $bResult;
+}
 /**
  * Helper function to retrieve the directory where files are to be uploaded
  * @return string Path to the temp directory used for uploading files 
@@ -168,6 +204,8 @@ function CheckPHPVersion(SetupWebPage $oP)
 		$bResult = false;
 	}
 	
+	$bResult = $bResult & CheckMemoryLimit($oP, MIN_MEMORY_LIMIT);
+	
 	return $bResult;
 }