http://www.bitrixsoft.com/download/scripts/bitrix_server_test.php'; $M['SELF_OLD']='Outdated'; $M['SELF_NEW']='Fresh'; $M['TITLE']='Bitrix Site Manager Server Test'; $M['TOP_MSG']='Server Test Bitrix Site Manager'; $M['TOP_DESC']='Here you can find server configuration parameters required for correct management of the product'; $M['TOP_SELECT_TYPE']='Select: '; $M['TOP_TAR1']=' Required settings'; $M['TOP_TAR2']=' Recommended settings'; $M['TOP_LINKS']='
Training course “Configuring Web Systems for Best Performance”

'; $M['START_TEST']='Start testing'; $M['CONF_GENERAL']='General'; $M['CONF_FS']='File system'; $M['SENDFILE']='send file'; $M['CONF_EXT']='PHP extensions'; $M['CONF_MYSQL']='MySQL configuration'; $M['CONF_ADD']='Additional Information'; $M['OPEN']='open'; $M['COPY']=' © Bitrix Site Manager, 2001-'; $M['SUPPORT_LINK']='www.bitrixsoft.com | Support'; $M['OPEN_RESULT']='Show test results'; $M['LIMIT']='limit:'; $M['TESTING']=' testing...'; $M['DEL_TMP_TABLE']='Deleting test table'; $M['TEST_MYSQL']='Test MySQL server'; $M['SERVER_ANS']='Server response'; $M['WRONG_ANS']='Wrong response'; $M['NA']="Not determined"; $M['WEB_SERVER']="Web-server version"; $M['WEB_SERVER_DESC']=" Required: Apache 1.3.0 and higher or IIS 5.0 and higher"; $M['SAPI']="PHP interface"; $M['SAPI_DESC']="It's recommended to run PHP as the Apache module. It's faster than CGI and allows more flexible settings."; $M['PHP_VER']="PHP version"; $M['PHP_VER_DESC']='Required version: 5.0 and higher, 5.2 is recommended'; $M['SAFE_DESC']="Safe Mode is not supported"; $M['TEST_SESS']="Sessions saving"; $M['TEST_SESS_DESC']='Required for saving authorization'; $M['TEST_SESS_UA']="Sessions saving without UserAgent"; $M['TEST_SESS_UA_DESC']='Required for file upload plugin'; $M['SHORT_TAG']="short_open_tag value"; $M['SHORT_TAG_DESC']='short_open_tag=off is not supported'; $M['MEM_LIMIT']="memory_limit value"; $M['MEM_LIMIT_DESC']='Memory limit settings should be not less than 32M (64M for "Professional" and higher editions). It is recommended to disable unused PHP modules in php.ini file to increase the memory size available to applications.'; $M['MEM_FACT']="Actual memory limit"; $M['MEM_FACT_DESC']='Sometimes, actual memory limit differs from PHP settings'; $M['SENDMAIL']="Email Sending"; $M['SENDMAIL_DESC']='Attempt to call the mail() function'; $M['SOCK_TEST']='Functions to work with sockets'; $M['SOCK_TEST_DESC']='Required for work of SiteUpdate system'; $M['SYSUPDATE']="SiteUpdate system"; $M['SYSUPDATE_DESC']='Attempt to connect to the www.bitrixsoft.com on port 80'; $M['NO_CONNECT']='No connection'; $M['HTTP_AUTH']="HTTP authorization"; $M['1C_1']='Necessary for the integration with MS Outlook. Connecting to'; $M['1C_2']=' on '; $M['1C_3']=' port'; $M['SET_TM']="Setting of set_time_limit"; $M['SET_TM_DESC']='For correct work of the SiteUpdate system and system agents it is recommended to allow managing of the max_execution_time parameter value through the set_time_limit function in product scripts.'; $M['TIME_TEST']="Execution time test"; $M['TIME_TEST_CPU']="Execution time test with CPU load"; $M['TIME_TEST_CPU_DESC']=""; $M['TIME_TEST_DESC']='Attempt to execute the script for 60 seconds'; $M['PHP_ACC']='PHP accelerator'; $M['PHP_ACC_DESC']='PHP Accelerator is recommended (APC, eAccelerator or any other), it allows to greatly reduce the CPU load and PHP scripts execution time. It\'s desirable that the accelerator memory should be sufficient for commonly-used PHP pages. Using of filters is recommended: eaccelerator.filter !*/help/* !*/admin/* !*/bitrix/*cache/* */bitrix/* */.*.php
If there is no PHP accelerator, analysis of phpinfo() is required'; $M['CONFLICT']='conflict'; $M['NOT_FOUND']='not found'; $M['CBP_VALUE']='allow_call_time_pass_reference value'; $M['D_SPACE']="Disk space"; $M['D_SPACE_DESC']='It is recommended to have not less than 50M for the Start Edition and 150M for the Enterprise Edition'; $M['F_PERM']='Permissions for the current folder'; $M['F_CREATE']='Folder creation'; $M['F_CREATE_DESC']='Attempt to create a test folder'; $M['F_NEW_PERM']='Permissions for the created folder'; $M['F_DELETE']='Folder deletion'; $M['FL_CREATE']='File creation'; $M['FL_CREATE_D']='Attempt to create a test file'; $M['FL_PERM']='Permissions for the created file'; $M['FL_DEL']="File deletion"; $M['FL_EXEC']="File execution (for the created file)"; $M['FL_EXEC_D']='Sometimes, there are problems with executing files created with PHP'; $M['NOT_TESTED']='not tested'; $M['HTACCESS']='Processing .htaccess files'; $M['HTACCESS_D']='Attempting to configure 404-error handling for a newly created folder'; $M['FILE_UPL']='file_uploads value'; $M['FILE_UPL_TEST']='File upload'; $M['FILE_UPL_TEST_D']='Test upload of GIF image'; $M['IMG']='Image'; $M['IMG_D']='Image will be displayed after successful upload.'; $M['EREGS']='PHP regular expressions'; $M['PREG']='Perl regular expressions'; $M['ZLIB_D']='Required for correct Compression module work and fast updates loading'; $M['GDLIB']='Displaying graphs in the statistics and working with images'; $M['GDLIB_D']='Required for CAPTCHA functionality'; $M['SSL']='SSL support'; $M['SSL_D']='Required for correct eStore module work with external payment systems plugins'; $M['MBSTR']='mbstring support'; $M['MBSTR_D']='Required for correct product work with UTF-8'; $M['MYSQL']='MySQL functions'; $M['MYSQL_D']='MySQL functions are mandatory'; $M['MYSQL_CONNECT']='Connection to MySQL server'; $M['MYSQL_VER']='MySQL server version'; $M['MYSQL_REQ']='MySQL 4.1.11 or 5.0 and higher is highly recommended. (No alpha or beta releases are allowed).'; $M['MYSQL_REQ_D']='MySQL 4.1.11 is highly recommended'; $M['MYSQL_SELECT_DB']='Database selection'; $M['INNODB']='InnoDB Support'; $M['DB_TEST_TABLE']='Creating a test table'; $M['INSERT']='Running Insert query'; $M['INSERT_D']='Queries per second: if lower than 2000, it might indicate low DB performance'; $M['DB_SELECT']='Database selection'; $M['DB_CONNECT']='Connection to MySQL server'; $M['MYSQL_TEST']='MySQL test'; $M['SQL_MODE_DESC']='`STRICT*` modes are not supported'; $M['DB_HOST']='DB Host'; $M['DB_NAME']='DB name'; $M['DB_USER']='User'; $M['DB_PASS']='Password'; $M['SHOW_ERR']='Display errors'; $M['SHOW_ERR_D']='Turns on error displaying for this page and writes the file bitrix_server_test.log'; $M['POST_MS']="post_max_size value"; $M['ERROR']='Error'; $M['YES']='Yes'; $M['NO']='No'; $M['FS_TIME']="Time to create 1000 files (sec)"; $M['SEC']="sec."; $M['TIME']="Time"; $M['FS_TIME_D']=""; $M['SECURE_DBCONN']=""; $M["LOADER_LOAD_CANT_OPEN_WRITE"] = "Cannot open file #FILE# for writing"; $M["LOADER_NEW_VERSION"] = "Unable to load new version of this script"; } else { $M['SELF_VERSION']='Версия теста'; $M['SELF_VERSION_DESC']='Можно скачать по ссылке: http://www.1c-bitrix.ru/download/scripts/bitrix_server_test.php'; $M['SELF_OLD']='Устарела'; $M['SELF_NEW']='Актуальная'; $M['TITLE']='Сервер-тест "Битрикс: Управление сайтом"'; $M['TOP_MSG']='Сервер-тест  "Битрикс: Управление сайтом"'; $M['TOP_DESC']='Отображаются параметры конфигурации сервера, необходимые для использования всех возможностей программного продукта "Битрикс: Управление Сайтом"'; $M['TOP_SELECT_TYPE']='Отметить требования конфигурации сервера для: '; $M['TOP_TAR1']='общего тарифа'; $M['TOP_TAR2']='тарифа "Битрикс"'; $M['TOP_LINKS']=' Учебный курс для хостеров
Информация по сертификации хостинга
Требования по настройкам хостинга'; $M['START_TEST']='Начать тестирование'; $M['CONF_GENERAL']='Общая конфигурация'; $M['CONF_FS']='Файловая система'; $M['SENDFILE']="Отправить файл"; $M['CONF_EXT']='Расширения php'; $M['CONF_MYSQL']='Конфигурация MySQL'; $M['CONF_ADD']='Дополнительная информация'; $M['OPEN']='открыть'; $M['COPY']=' © «Битрикс», 2001-'; $M['SUPPORT_LINK']='www.bitrixsoft.ru | Техподдержка'; $M['OPEN_RESULT']='Открыть результат теста'; $M['LIMIT']='лимит:'; $M['TESTING']='тестируем...'; $M['DEL_TMP_TABLE']="Удаление тестовой таблицы"; $M['TEST_MYSQL']="Тестировать MySQL сервер"; $M['SERVER_ANS']="Ответ сервера"; $M['WRONG_ANS']='неверный ответ'; $M['NA']="Не определено"; $M['WEB_SERVER']="Версия веб-сервера"; $M['WEB_SERVER_DESC']="Требуется Apache 1.3.0 и выше или IIS 5.0 и выше"; $M['SAPI']="Интерфейс php"; $M['SAPI_DESC']="Рекомендуется запускать PHP как модуль Apache, это быстрее чем CGI и даёт более гибкие настройки"; $M['PHP_VER']="Версия php"; $M['PHP_VER_DESC']='Требуется 5.0 и выше, рекомендуется 5.2'; $M['SAFE_DESC']="Режим safe_mode не поддерживается"; $M['TEST_SESS']="Сохранение сессии"; $M['TEST_SESS_DESC']='Необходимо для сохранения авторизации'; $M['TEST_SESS_UA']="Сохранение сессий без UserAgent"; $M['TEST_SESS_UA_DESC']='Необходимо для апплета множественной загрузки файлов и обмена с 1С'; $M['SHORT_TAG']="Значение short_open_tag"; $M['SHORT_TAG_DESC']='short_open_tag=off не поддерживается'; $M['MEM_LIMIT']="Значение memory_limit"; $M['MEM_LIMIT_DESC']='Ограничение памяти должно быть не ниже 32 Мб (64 Мб для старших редакций начиная с "Эксперта"). Неиспользуемые PHP модули в php.ini желательно отключить чтобы увеличить размер памяти, доступной для приложений.'; $M['MEM_FACT']="Фактическое ограничение памяти"; $M['MEM_FACT_DESC']='Иногда фактическое ограничение памяти может отличаться от установок php'; $M['SENDMAIL']="Отправка почты"; $M['SENDMAIL_DESC']='Попытка вызвать функцию mail()'; $M['SOCK_TEST']="Функции работы с сокетами"; $M['SOCK_TEST_DESC']='Необходимы для работы системы обновлений'; $M['SYSUPDATE']="Система обновлений"; $M['SYSUPDATE_DESC']='Осуществляется попытка подключиться к серверу www.bitrixsoft.ru на порт 80'; $M['NO_CONNECT']="нет подключения"; $M['HTTP_AUTH']="HTTP авторизация"; $M['1C_1']='Требуется для интеграцией с 1С и MS Outlook. Подключение к '; $M['1C_2']=' на '; $M['1C_3']=' порт'; $M['SET_TM']="Установка set_time_limit"; $M['SET_TM_DESC']='Для операций обновления продукта и работы агентов рекомендуется разрешать управление значением max_execution_time через функцию set_time_limit из продукта.'; $M['TIME_TEST']="Тест на время"; $M['TIME_TEST_CPU']="Тест на время с нагрузкой на процессор"; $M['TIME_TEST_CPU_DESC']="В ряде случаев скрипты отключаются при превышении нагрузки на процессор"; $M['TIME_TEST_DESC']='Попытка выполнять скрипт в течение 60 секунд'; $M['PHP_ACC']="Акселератор php"; $M['PHP_ACC_DESC']='Рекомендуется наличие акселератора PHP (APC, eAccelerator или любого другого), это позволяет снизить нагрузку на CPU в несколько раз и уменьшить время выполнения PHP кода. Желательно, чтобы памяти акселератора было достаточно для размещения всех часто используемых PHP страниц. Рекомендуется установить фильтры, например (для eA): eaccelerator.filter !*/help/* !*/admin/* !*/bitrix/*cache/* */bitrix/* */.*.php
Если акселератор не обнаружен, требуется анализ phpinfo()'; $M['CONFLICT']='конфликт'; $M['NOT_FOUND']='не обнаружен'; $M['CBP_VALUE']="Значение allow_call_time_pass_reference"; $M['D_SPACE']="Место на диске"; $M['D_SPACE_DESC']='Не менее 50 Мб для редакции "Старт" и не менее 150 Мб для редакции "Бизнес"'; $M['F_PERM']="Права на текущую папку"; $M['F_CREATE']="Создание папки"; $M['F_CREATE_DESC']='Попытка создать тестовую папку'; $M['F_NEW_PERM']="Права на созданную папку"; $M['F_DELETE']="Удаление папки"; $M['FL_CREATE']="Создание файла"; $M['FL_CREATE_D']='Попытка создать тестовый файл'; $M['FL_PERM']="Права на созданный файл"; $M['FL_DEL']="Удаление файла"; $M['FL_EXEC']="Запуск созданного файла"; $M['FL_EXEC_D']='В ряде случаев возникают проблемы при запуске файла, созданного средствами PHP'; $M['NOT_TESTED']="не тестировалось"; $M['HTACCESS']="Обработка .htaccess"; $M['HTACCESS_D']='Осуществляется попытка настроить обработку 404-й ошибки во вновь созданной папке'; $M['FILE_UPL']="Значение file_uploads"; $M['FILE_UPL_TEST']="Загрузка файла"; $M['FILE_UPL_TEST_D']='Тестовая загрузка картинки в формате GIF'; $M['IMG']="Изображение"; $M['IMG_D']='При успешной загрузке отображается картинка'; $M['EREGS']="Регулярные выражения PHP"; $M['PREG']="Регулярные выражения Perl"; $M['ZLIB_D']='Требуется для работы модуля компрессии и быстрой загрузки обновлений'; $M['GDLIB']='Отображение графиков в статистике, работа с изображениями'; $M['GDLIB_D']='Необходима для работы CAPTCHA'; $M['SSL']="Поддержка SSL"; $M['SSL_D']='Необходима для работы интернет-магазина с подключением внешних платёжных систем'; $M['MBSTR']="Поддержка mbstring"; $M['MBSTR_D']='Необходима для работы продукта в кодировке UTF-8'; $M['MYSQL']="Функции MySQL"; $M['MYSQL_D']='Обязательнно наличие функций MySQL'; $M['MYSQL_CONNECT']="Подключение к серверу MySQL"; $M['MYSQL_VER']="Версия MySQL сервера"; $M['MYSQL_REQ']='Минимальные требования: 4.1.11, рекомендуется 5.0 и выше. Альфа и бета версии не допускаются.'; $M['MYSQL_REQ_D']=''; $M['MYSQL_SELECT_DB']="Выбор базы данных"; $M['INNODB']="Поддержка InnoDB"; $M['DB_TEST_TABLE']="Создание тестовой таблицы"; $M['INSERT']="Выполнение запросов INSERT"; $M['INSERT_D']='Число запросов в секунду: значение ниже 2000 может свидетельствовать о низкой производительности БД'; $M['DB_SELECT']="Выбор базы данных"; $M['DB_CONNECT']="Подключение к серверу MySQL"; $M['MYSQL_TEST']="Тестирование MySQL"; $M['SQL_MODE_DESC']='Режимы `STRICT*` не поддерживаются'; $M['DB_HOST']="Хост БД"; $M['DB_NAME']="Имя БД"; $M['DB_USER']="Пользователь"; $M['DB_PASS']="Пароль"; $M['SHOW_ERR']="Включить отладку"; $M['SHOW_ERR_D']='Включает отображение ошибок и пишет лог файл bitrix_server_test.log'; $M['POST_MS']="Значение post_max_size"; $M['ERROR']='Ошибка'; $M['YES']="Да"; $M['NO']="Нет"; $M['TIME']="Время"; $M['FS_TIME']="Время на создание 1000 файлов (сек)"; $M['FS_TIME_D']="Нормальное время - до 2 секунд"; $M['SEC']="сек."; $M['SECURE_DBCONN']="Есть файл конфигурации dbconn.php, но значения не показываются в целях безопасности"; $M["LOADER_LOAD_CANT_OPEN_WRITE"] = "Не могу открыть файл #FILE# на запись"; $M["LOADER_NEW_VERSION"] = "Доступна новая версия скрипта тестирования, но загрузить её не удалось"; } if (@$_GET['auth_test']) { $remote_user = $_SERVER["REMOTE_USER"] ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp); if ($_SERVER['PHP_AUTH_USER']=='test_user' && $_SERVER['PHP_AUTH_PW']=='test_password') die('SUCCESS'); else { header('HTTP/1.x 401 Authorization required'); header('WWW-Authenticate: Basic realm="Restricted area"'); die('

401 Authorization required

'); } } elseif (@$_GET['session_test']) { session_start(); if ($_SESSION['session_test']=='ok') die('SUCCESS'); else die('Fault'); } elseif (@$_GET['image']) { header("Content-type: image/gif"); echo file_get_contents($image_file); @unlink($image_file); die(); } elseif (@$_GET['phpinfo']) { phpinfo(); die(); } elseif (@$_GET['time_test']) { @set_time_limit(300); @ini_set('max_execution_time',300); $t=time(); while(time()-$t < 60) { if ($_GET['max_cpu']) date('Y-m-d H:i:s'); else sleep(1); } die("SUCCESS"); } elseif (@$_GET['memory_test']) { $max=intval($_GET['max']); if (!$max) $max = 255; for($i=1;$i<=$max;$i++) $a[]=str_repeat(chr($i),1024*1024); // 1 Mb die("SUCCESS"); } elseif(@$_GET['killme']=='Y') { unlink(__FILE__); echo file_exists(__FILE__)?'ERROR!':'OK'; die(); } session_start(); ?> <?php echo GM('TITLE');?> >

".GM('TOP_TAR1').""; else echo "".GM('TOP_TAR1').""; ?> / ".GM('TOP_TAR2').""; else echo "".GM('TOP_TAR2').""; ?>
'> >
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()); // 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=intval(ini_get("short_open_tag")); $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.bitrixsoft.com", "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.bitrixsoft.com\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 invalid") $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")) { $r=eaccelerator_info(); $res = "EA (ver. ".$r['version'].", mem. ".$r['memorySize'].")"; } elseif($val = function_exists("accelerator_reset")) $res = 'Zend Accelerator'; elseif($val = function_exists("apc_fetch")) $res = "APC"; elseif($val = function_exists("xcache_get")) $res = "XCache"; show($pr,$res?GM('YES').' ('.$res.')':GM('NOT_FOUND'),!$val); // allow_call_time_pass_reference debug(__LINE__); $val=intval(ini_get('allow_call_time_pass_reference')); show(array(GM('CBP_VALUE'),'',1),$val,!$val); ?>
'.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 "
"; show($pr,""); 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 "
"; @show(array(GM('DB_HOST'),$dbconn?GM('SECURE_DBCONN'):''),""); @show(GM('DB_NAME'),""); @show(GM('DB_USER'),""); @show(GM('DB_PASS'),""); 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); // Register globals $val=intval(ini_get('register_globals')); $pr=array("Register globals",''); show($pr,$val); // Display errors $val=intval(ini_get('display_errors')); 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=mysql_query("SHOW TABLES LIKE '".$name."'"); if ($res) { if (!mysql_fetch_row($res)) { if ($innodb && mysql_query("CREATE TABLE ".$name." (tst varchar(100), tst2 varchar(50), tst3 varchar(30), tst4 text) ENGINE=INNODB")) return $name; elseif (!$innodb && 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() { $path = dirname($_SERVER['PHP_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() { $dir = $_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_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"); } ######################################################################?>