-
-
-document.location="?UPDATE_SUCCESS=Y";';
- die();
- }
- else
- $strError = str_replace("#FILE#", $this_script_name, GM("LOADER_LOAD_CANT_OPEN_WRITE"));
- }
- else
- $strError = GM('LOADER_NEW_VERSION');
- }
- break;
- }
- }
- fclose($res);
- }
-}
-
-if ($strError)
- echo '
'.$strError.'
';
-
-// Web server
-debug(__LINE__);
-$strSERVER_SOFTWARE = $_SERVER["SERVER_SOFTWARE"];
-if (strlen($strSERVER_SOFTWARE)<=0)
- $strSERVER_SOFTWARE = $_SERVER["SERVER_SIGNATURE"];
-
-$strSERVER_SOFTWARE = trim($strSERVER_SOFTWARE);
-if (@preg_match("#^([a-zA-Z-]+).*?([\d]+\.[\d]+(\.[\d]+)?)#i", $strSERVER_SOFTWARE, $arSERVER_SOFTWARE))
-{
- $strWebServer = $arSERVER_SOFTWARE[1];
- $strWebServerVersion = $arSERVER_SOFTWARE[2];
-
- $val = $strWebServer." ".$strWebServerVersion;
-} else {
- $val = GM("NA");
-}
-
-$pr=array(GM('WEB_SERVER'),GM('WEB_SERVER_DESC'),1);
-show($pr,$val);
-
-// CGI or not
-debug(__LINE__);
-$pr=array(GM('SAPI'),GM('SAPI_DESC'));
-$sapi = strtolower(php_sapi_name());
-show($pr,$sapi,$sapi=='cgi');
-
-// PHP version
-debug(__LINE__);
-$pr=array(GM('PHP_VER'),GM('PHP_VER_DESC'),1);
-show($pr,phpversion(),version_compare(phpversion(),$PHP_MIN,'<'));
-
-// Safe mode
-debug(__LINE__);
-$val=intval(ini_get("safe_mode"));
-$pr=array("Safe mode",GM('SAFE_DESC'),1);
-show($pr,$val,$val);
-
-// short_open_tag
-debug(__LINE__);
-$val = ini_get("short_open_tag") == 1 || strtoupper(ini_get("short_open_tag")) == 'ON';
-$pr=array(GM('SHORT_TAG'),GM('SHORT_TAG_DESC'),1);
-show($pr,$val,!$val);
-
-// Memory limit
-debug(__LINE__);
-$val=ini_get('memory_limit')?ini_get('memory_limit'):get_cfg_var("memory_limit");
-$pr=array(GM('MEM_LIMIT'),GM('MEM_LIMIT_DESC'),1);
-show($pr,$val);
-
-// Test memory limit
-debug(__LINE__);
-$pr=array(GM('MEM_FACT'),GM('MEM_FACT_DESC'),1);
-show($pr,"
".GM('NOT_TESTED')."
");
-
-// Mail()
-debug(__LINE__);
-$pr=array(GM('SENDMAIL'),GM('SENDMAIL_DESC'),1);
-if ($bTest)
-{
- $t = time();
- $val = mail("hosting_test@bitrix.ru","Bitrix server test","This is test message. Delete it.");
- $tt = time() - $t;
- show($pr,($val?GM('YES'):GM('NO')).($tt?" (".GM('TIME').": $tt ".GM('SEC').")":""),!$val||$tt>1);
-}
-else
- show($pr,'
'.GM('NOT_TESTED').'');
-
-// socket
-debug(__LINE__);
-$val = $socket = function_exists('fsockopen');
-$pr=array(GM('SOCK_TEST'),GM('SOCK_TEST_DESC'),1);
-show($pr,$val,!$val);
-
-// Session data
-debug(__LINE__);
-$_SESSION['session_test'] = 'ok';
-$pr=array(GM('TEST_SESS'),GM('TEST_SESS_DESC'),1);
-show($pr,"
".GM('NOT_TESTED')."
");
-session_write_close();
-
-// Session without UserAgent test: for upload applet
-debug(__LINE__);
-$ok = false;
-$host = $_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : 'localhost';
-$port = $_SERVER['SERVER_PORT'] ? $_SERVER['SERVER_PORT'] : 80;
-
-if ($bTest)
-{
- $pr=array(GM('TEST_SESS_UA'),GM('TEST_SESS_UA_DESC'),1);
- if ($socket)
- $res = fsockopen(($port == 443 ? 'ssl://' : '').$host, $port, $errno, $errstr, 3);
- else
- $res = false;
-
- if($res)
- {
- $strRequest = "GET ".dirname($_SERVER['PHP_SELF'])."/bitrix_server_test.php?session_test=Y HTTP/1.1\r\n";
- $strRequest.= "Host: ".$host."\r\n";
- $strRequest.= "Cookie: ".session_name()."=".session_id()."\r\n";
- $strRequest.= "\r\n";
-
- $strRes = getHttpResponse($res, $strRequest);
- fclose($res);
-
- if (trim($strRes) == "SUCCESS")
- $val = $ok = GM('YES');
- else
- $val = GM('NO');
- }
- else
- $val=GM('NO_CONNECT');
- show($pr,$val,!$ok);
-}
-
-// Update system
-debug(__LINE__);
-$pr=array(GM('SYSUPDATE'),GM('SYSUPDATE_DESC'),1);
-if ($bTest)
-{
- $ok = 0;
- if ($socket)
- $res = fsockopen("www.1c-bitrix.ru", "80", $errno, $errstr, 3);
- else
- $res = false;
- if($res)
- {
- $strRequest = "POST /bitrix/updates/sysserver.php HTTP/1.1\r\n";
- $strRequest.= "User-Agent: BitrixSMUpdater\r\n";
- $strRequest.= "Accept: */*\r\n";
- $strRequest.= "Host: www.1c-bitrix.ru\r\n";
- $strRequest.= "Accept-Language: en\r\n";
- $strRequest.= "Content-type: application/x-www-form-urlencoded\r\n";
- $strRequest.= "Content-length: 7\r\n\r\n";
- $strRequest.= "lang=en";
- $strRequest.= "\r\n";
-
- $strRes = getHttpResponse($res, $strRequest);
- fclose($res);
-
- if (strtolower(strip_tags($strRes)) == "license key is required")
- $val = $ok = 1;
- else
- $val = GM('WRONG_ANS')."
>>";
- }
- else
- $val=GM('NO_CONNECT');
- show($pr,$val,!$ok);
-}
-else
- show($pr,'
'.GM('NOT_TESTED').'');
-
-// HTTP Auth
-debug(__LINE__);
-$ok = false;
-$pr=array(GM('HTTP_AUTH'),GM('1C_1').$host.GM('1C_2').$port.GM('1C_3'),2);
-if ($bTest)
-{
- if ($socket)
- $res = fsockopen(($port == 443 ? 'ssl://' : '').$host, $port, $errno, $errstr, 3);
- else
- $res = false;
-
- if($res)
- {
- $url = parse_url($_SERVER['REQUEST_URI']);
- $strRequest = "GET ".$url['path']."?auth_test=Y HTTP/1.1\r\n";
- $strRequest.= "Host: ".$host."\r\n";
- $strRequest.= "Authorization: Basic dGVzdF91c2VyOnRlc3RfcGFzc3dvcmQ=\r\n";
- $strRequest.= "\r\n";
-
- $strRes = getHttpResponse($res, $strRequest);
- fclose($res);
-
- if (trim($strRes) == "SUCCESS")
- {
- $val = $ok = GM('YES');
- if ($_SERVER['REMOTE_USER'])
- $val .= ' ($_SERVER["REMOTE_USER"])';
- elseif ($_SERVER['REDIRECT_REMOTE_USER'])
- $val .= ' ($_SERVER["REDIRECT_REMOTE_USER"])';
- }
- else
- $val = GM('NO');
- }
- else
- $val=GM('NO_CONNECT');
- show($pr,$val,!$ok);
-}
-else
- show($pr,'
'.GM('NOT_TESTED').'');
-
-// Set time limit
-#debug(__LINE__);
-#$pr=array(GM('SET_TM'),GM('SET_TM_DESC'),2);
-#@set_time_limit(300);
-#@ini_set('max_execution_time',300);
-#$tl=(ini_get('max_execution_time')==300);
-#show($pr,$tl,!$tl);
-
-$pr=array(GM('TIME_TEST'),GM('TIME_TEST_DESC'),2);
-show($pr,"
".GM('NOT_TESTED')."
");
-
-$pr=array(GM('TIME_TEST_CPU'),GM('TIME_TEST_CPU_DESC'),2);
-show($pr,"
".GM('NOT_TESTED')."
");
-
-// Accelerator
-debug(__LINE__);
-$res = "";
-$pr = array(GM('PHP_ACC'),GM('PHP_ACC_DESC'),2);
-if ($val = function_exists("eaccelerator_info"))
-{
- $res = "EAccelerator";
- $val = false;
-}
-elseif($val = function_exists("accelerator_reset"))
-{
- $res = 'Zend Accelerator
есть проблема';
- $val = false;
-}
-elseif($val = function_exists("apc_fetch"))
- $res = "APC";
-elseif($val = function_exists("xcache_get"))
- $res = "XCache";
-elseif(($val = function_exists("opcache_reset")) && ini_get('opcache.enable'))
- $res = "OPcache";
-show($pr,$res?GM('YES').' ('.$res.')':GM('NOT_FOUND'),!$val);
-
-// max_input_vars
-if ($m = ini_get('max_input_vars'))
-{
- $pr = array('max_input_vars',GM('max_input_vars'),2);
- show($pr, $m, $m < 10000);
-}
-
-?>
-
-
-
-'.GM('NOT_TESTED').'');
-
-
-if ($dir)
-{
- // dirinfo
-debug(__LINE__);
- show(GM('F_NEW_PERM'),dirinfo($dir));
-
- // Folder delete
-debug(__LINE__);
- $val=rmdir($dir);
- show(array(GM('F_DELETE'),'',1), $val==false?GM('ERROR'):1, !$val);
-}
-
-
-// File create
-debug(__LINE__);
-$file = false;
-$pr=array(GM('FL_CREATE'),GM('FL_CREATE_D'),1);
-if ($bTest)
-{
- $file=create_tmp_file();
- show($pr, $file==false?GM('ERROR'):1, $file==false);
-}
-else
- show($pr,'
'.GM('NOT_TESTED').'');
-
-
-if ($file)
-{
- // dirinfo
-debug(__LINE__);
- show(GM('FL_PERM'),dirinfo($file));
-
- // File delete
-debug(__LINE__);
- $del=unlink($file);
- show(array(GM('FL_DEL'),'',1), $val==false?GM('ERROR'):1, !$val);
-}
-
-// File exec
-debug(__LINE__);
-$pr=array(GM('FL_EXEC'),GM('FL_EXEC_D'),1);
-$ok = false;
-$host = $_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : 'localhost';
-$port = $_SERVER['SERVER_PORT'] ? $_SERVER['SERVER_PORT'] : 80;
-$val = GM('NOT_TESTED');
-if ($file && $bTest)
-{
- $fn=$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF'])."/bitrix_test_exec.php";
- $f=fopen($fn,"wb");
- $data='';
- fputs($f,$data);
- fclose($f);
-
- if ($socket)
- $res = fsockopen(($port == 443 ? 'ssl://' : '').$host, $port, $errno, $errstr, 3);
- else
- $res = false;
-
- if($res)
- {
- $strRequest = "GET ".dirname($_SERVER['PHP_SELF'])."/bitrix_test_exec.php HTTP/1.1\r\n";
- $strRequest.= "Host: ".$host."\r\n";
- $strRequest.= "\r\n";
-
- $strRes = getHttpResponse($res, $strRequest);
- fclose($res);
-
- if (trim($strRes) == "SUCCESS")
- $val = $ok = GM('YES');
- else
- $val = GM('NO');
- }
- else
- $val=GM('NO_CONNECT');
- show($pr,$val,!$ok);
- unlink($fn);
-}
-else
- show($pr,$val,!$ok);
-
-// .htaccess
-debug(__LINE__);
-$ok = false;
-$host = $_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : 'localhost';
-$port = $_SERVER['SERVER_PORT'] ? $_SERVER['SERVER_PORT'] : 80;
-
-$pr=array(GM('HTACCESS'),GM('HTACCESS_D'),1);
-if ($bTest && $file && $dir && prepare_htaccess_test())
-{
- if ($socket)
- $res = fsockopen(($port == 443 ? 'ssl://' : '').$host, $port, $errno, $errstr, 3);
- else
- $res = false;
-
- if($res)
- {
- $strRequest = "GET ".dirname($_SERVER['PHP_SELF'])."/bitrix_htaccess_test/test_file.php HTTP/1.1\r\n";
- $strRequest.= "Host: ".$host."\r\n";
- $strRequest.= "\r\n";
-
- $strRes = getHttpResponse($res, $strRequest);
- fclose($res);
-
- if (false!==strpos($strRes,"SUCCESS"))
- $val = $ok = GM('YES');
- else
- $val = GM('NO');
- }
- else
- $val=GM('NO_CONNECT');
- show($pr,$val,!$ok);
-
- clear_htaccess_test();
-}
-else
- show($pr,GM('NOT_TESTED'),1);
-
-// Filesystem benchmark
-debug(__LINE__);
-$pr=array(GM('FS_TIME'),GM('FS_TIME_D'));
-if ($bTest && $file && $dir)
-{
- function xmktime()
- {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
-
- $t = xmktime();
- $path = dirname(__FILE__).'/bx_fs_test';
- mkdir($path);
- $res = true;
-
- for($i=0;$i<1000;$i++)
- {
- if (!(($f = fopen($path.'/bx_test_file_'.$i,'wb')) && fwrite($f, '') && fclose($f)))
- {
- $res = false;
- break;
- }
- include($path.'/bx_test_file_'.$i);
- }
-
- if ($res)
- for($i=0;$i<1000;$i++)
- if (!unlink($path.'/bx_test_file_'.$i))
- {
- $res = false;
- break;
- }
- rmdir($path);
- $time = round(xmktime()-$t,2);
- show($pr,$res ? $time : GM('ERROR'),$time>5);
-}
-else
- show($pr,GM('NOT_TESTED'),1);
-
-// File uploads
-debug(__LINE__);
-$val=intval(ini_get('file_uploads'));
-show(array(GM('FILE_UPL'),'',1),$val,!$val);
-
-
-$tmp_name=@$_FILES['test_file']['tmp_name'];
-$pr=array(GM('FILE_UPL_TEST'),GM('FILE_UPL_TEST_D'),1);
-
-if (is_uploaded_file($tmp_name)) {
- $val=move_uploaded_file($tmp_name,$image_file);
- show($pr,$val==false?GM('ERROR'):1,$val==false);
- $pr=array(GM('IMG'),GM('IMG_D'));
- show($pr,"

");
-} else {
- echo "
";
-}
-
-?>
-
-'.GM('NOT_TESTED').'');
-
-// mbstring
-debug(__LINE__);
-$val=intval(function_exists("mb_substr"));
-$pr=array(GM('MBSTR'),GM('MBSTR_D'),1);
-show($pr,$val,!$val);
-
-if ($val && $lang=='ru')
-{
- $utf = false!==strpos(strtolower(ini_get('mbstring.internal_encoding')),'utf') && ini_get('mbstring.func_overload')==2;
- show(array("Включен режим UTF для mbstring"),$utf);
-
- /*
- $text0 = $utf ? "\xd0\xa2\xd0\xb5\xd0\xa1\xd1\x82" : 'ТеСт';
- $text1 = $utf ? "\xd1\x82\xd0\xb5\xd1\x81\xd1\x82" : 'тест';
-
- $res = strtolower($text0);
- $val = $res==$text1 || $res==$text0;
- show(array("Работа функции strtolower",'Тестируется функция strtolower для русских букв. Важно чтобы не было обратного преобразования: "ТеСт" -> "ТЕСТ" вместо "тест"',1),$val,!$val);
-
-
- $l = strlen("\xd0\xa2");
- $val = $utf && $l==1 || !$utf && $l==2;
- show(array("Работа функции strlen",'',1),$val,!$val);
- */
-}
-
-
-?>
-
-'.GM('NOT_TESTED').'');
-
-echo "
";
-
-
-
-
-?>
-
-".GM('OPEN')."");
-
-// umask
-$pr=array("umask",'');
-show($pr,sprintf("%03o",umask()));
-
-//post_max_size
-$pr=array(GM('POST_MS'),'');
-$val=ini_get("post_max_size");
-show($pr,$val);
-
-// Display errors
-$val=intval(ini_get('display_errors'));
-if (version_compare(phpversion(), '5.4', '<'))
- show("Display errors",$val);
-
-show("Server time",date("d.m.Y H:i"));
-show("phpinfo()","
".GM('OPEN')."");
-
-show("Language","
ru /
en");
-
-show("Delete bitrix_server_test.php file","
delete");
-
-
-##############################################
-function show($in_param,$value,$red='no') {
- if (is_array($in_param)) {
- $param=$in_param[0];
- $help=$in_param[1];
- $lvl=@$in_param[2];
- } else {
- $param=$in_param;
- }
- if ($red==1)
- $color='red';
- elseif (!$red)
- $color='green';
- else
- $color='#000000';
-
- if ($value=='1')
- $value=GM('YES');
- elseif ($value=='0')
- $value=GM('NO');
-
- if (@$lvl>0 && $lvl<=@$_REQUEST['test'])
- $bold='style="font-weight:bold"';
- else
- $bold='';
-
- @print("
-
- |
- $param:
- |
-
-
- $value
-
- |
- $help |
-
-
");
-
-}
-
-function dirinfo($dir) {
- if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) {
- $perm=substr(sprintf('%o', @fileperms($dir)), -4);
- $user=posix_getpwuid(fileowner($dir));
- $group=posix_getgrgid(filegroup($dir));
- return $perm." ".$user['name']." ".$group['name'];
- } else {
- return "N/A";
- }
-}
-
-function microtime_float() {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
-}
-
-function create_tmp_folder()
-{
- $name=check_file_name(dirname(__FILE__).'/'.'bx_folder_test');
- mkdir($name);
- if (file_exists($name))
- return $name;
- else
- return false;
-}
-
-function create_tmp_file()
-{
- $name=check_file_name(dirname(__FILE__).'/'.'bx_file_test');
- $f=fopen($name,'wb');
- if ($f) fclose($f);
- if (file_exists($name))
- return $name;
- else
- return false;
-}
-
-function check_file_name($name)
-{
- if (file_exists($name))
- return check_file_name($name."_tmp");
- else
- return $name;
-}
-
-function create_tmp_table($innodb=false)
-{
- $name='bx_test';
- while (true)
- {
- $name.='_tmp';
- $res=bx_mysql_query("SHOW TABLES LIKE '".$name."'");
-
- if ($res)
- {
- if (!bx_mysql_fetch_row($res))
- {
- if ($innodb && bx_mysql_query("CREATE TABLE ".$name." (tst varchar(100), tst2 varchar(50), tst3 varchar(30), tst4 text) ENGINE=INNODB"))
- return $name;
- elseif (!$innodb && bx_mysql_query("CREATE TABLE ".$name." (tst varchar(100), tst2 varchar(50), tst3 varchar(30), tst4 text) ENGINE=MYISAM"))
- return $name;
- else
- return false;
- }
- } else
- return false;
- }
-}
-
-function prepare_htaccess_test()
-{
- $self = str_replace("\\","/",$_SERVER['PHP_SELF']);
- $path = dirname($self)."/bitrix_htaccess_test";
- $dir = $_SERVER['DOCUMENT_ROOT'].$path;
- clear_htaccess_test();
-
- if (!mkdir($dir)) return;
- $f=fopen($dir."/.htaccess","wb");
- $str = "ErrorDocument 404 ".$path."/404.php\n".
- "
\n".
- " RewriteEngine Off\n".
- "";
- fputs($f, $str);
- fclose($f);
- if (!file_exists($dir."/.htaccess")) return;
-
- $f=fopen($dir."/404.php","wb");
- $str = "";
- fputs($f, $str);
- fclose($f);
- if (!file_exists($dir."/404.php")) return;
-
- return true;
-}
-
-function clear_htaccess_test()
-{
- $self = str_replace("\\","/",$_SERVER['PHP_SELF']);
- $dir = $_SERVER['DOCUMENT_ROOT'].dirname($self)."/bitrix_htaccess_test";
- if (file_exists($dir))
- {
- unlink($dir."/.htaccess");
- unlink($dir."/404.php");
- rmdir($dir);
- }
-}
-
-function getHttpResponse($res, $strRequest)
-{
- fputs($res, $strRequest);
-
- $bChunked = False;
- while (($line = fgets($res, 4096)) && $line != "\r\n")
- {
- if (@preg_match("/Transfer-Encoding: +chunked/i", $line))
- $bChunked = True;
- elseif (@preg_match("/Content-Length: +([0-9]+)/i", $line, $regs))
- $length = $regs[1];
- }
-
- $strRes = "";
- if ($bChunked)
- {
- $maxReadSize = 4096;
-
- $length = 0;
- $line = fgets($res, $maxReadSize);
- $line = strtolower($line);
-
- $strChunkSize = "";
- $i = 0;
- while ($i < strlen($line) && in_array($line[$i], array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")))
- {
- $strChunkSize .= $line[$i];
- $i++;
- }
-
- $chunkSize = hexdec($strChunkSize);
-
- while ($chunkSize > 0)
- {
- $processedSize = 0;
- $readSize = (($chunkSize > $maxReadSize) ? $maxReadSize : $chunkSize);
-
- while ($readSize > 0 && $line = fread($res, $readSize))
- {
- $strRes .= $line;
- $processedSize += strlen($line);
- $newSize = $chunkSize - $processedSize;
- $readSize = (($newSize > $maxReadSize) ? $maxReadSize : $newSize);
- }
- $length += $chunkSize;
-
- $line = fgets($res, $maxReadSize);
-
- $line = fgets($res, $maxReadSize);
- $line = strtolower($line);
-
- $strChunkSize = "";
- $i = 0;
- while ($i < strlen($line) && in_array($line[$i], array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")))
- {
- $strChunkSize .= $line[$i];
- $i++;
- }
- $chunkSize = hexdec($strChunkSize);
- }
- }
- elseif ($length)
- $strRes = fread($res, $length);
- else
- while ($line = fread($res, 4096))
- $strRes .= $line;
-
- return $strRes;
-}
-
-function GM($code)
-{
- global $M;
- return $M[$code];
-}
-
-function debug($line)
-{
- static $f, $fail, $file;
- if (!$_REQUEST['debug'] || $fail)
- return;
- if (!$f)
- {
- if ($f = fopen(dirname(__FILE__).'/bitrix_server_test.log','wb'))
- $file = @file(__FILE__);
- else
- $fail = 1;
- }
- fwrite($f,date('H:i:s')."\t".$line."\t".trim($file[$line-2])."\n");
-}
-######################################################################?>
-
-