|
| 1 | +<?php |
| 2 | + |
| 3 | +function memory_limit_to_bytes($value) |
| 4 | +{ |
| 5 | + $value = trim($value); |
| 6 | + $last = strtolower($value[strlen($value) - 1]); |
| 7 | + switch ($last) { |
| 8 | + case 'g': |
| 9 | + @$value *= 1024; |
| 10 | + case 'm': |
| 11 | + @$value *= 1024; |
| 12 | + case 'k': |
| 13 | + @$value *= 1024; |
| 14 | + } |
| 15 | + return (int) $value; |
| 16 | +} |
| 17 | + |
| 18 | +$compatibility = true; |
| 19 | + |
| 20 | +$phpVersion = phpversion(); |
| 21 | +$phpVersionClass = version_compare($phpVersion, '7.4', '<') ? 'fail' : (version_compare($phpVersion, '8.0', '<') ? 'warn' : 'pass'); |
| 22 | +if ($phpVersionClass == 'fail') { |
| 23 | + $compatibility = false; |
| 24 | +} |
| 25 | + |
| 26 | +$memoryLimitBytes = memory_limit_to_bytes(ini_get('memory_limit')); |
| 27 | +$memoryCheckClass = $memoryLimitBytes < 256 * 1024 * 1024 ? 'fail' : 'pass'; |
| 28 | +if ($memoryCheckClass == 'fail') { |
| 29 | + $compatibility = false; |
| 30 | +} |
| 31 | + |
| 32 | +$curlCheckClass = extension_loaded('curl') ? 'pass' : 'fail'; |
| 33 | +if ($curlCheckClass == 'fail') { |
| 34 | + $compatibility = false; |
| 35 | +} |
| 36 | + |
| 37 | +$wpConfigPath = 'wp-config.php'; |
| 38 | +$mysqlCheckClass = 'pass'; |
| 39 | +if (!file_exists($wpConfigPath)) { |
| 40 | + $mysqlCheckClass = 'warn'; |
| 41 | +} else { |
| 42 | + mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); |
| 43 | + $fileLines = file($wpConfigPath); |
| 44 | + $pattern = "/define\s*\(\s*'DB_/i"; |
| 45 | + |
| 46 | + foreach ($fileLines as $line) { |
| 47 | + if (preg_match($pattern, $line)) { |
| 48 | + eval($line); |
| 49 | + } |
| 50 | + } |
| 51 | + |
| 52 | + try { |
| 53 | + $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); |
| 54 | + } catch (mysqli_sql_exception $e) { |
| 55 | + $msqlerror = $e; |
| 56 | + $mysqlCheckClass = 'fail'; |
| 57 | + $compatibility = false; |
| 58 | + } |
| 59 | +} |
| 60 | + |
| 61 | +?> |
| 62 | +<html> |
| 63 | + <head> |
| 64 | + <title>Проверка сервера на совместимость с ВП</title> |
| 65 | + <style> |
| 66 | + body { |
| 67 | + font-family: Arial, sans-serif; |
| 68 | + margin: 20px; |
| 69 | + } |
| 70 | + table { |
| 71 | + border-collapse: collapse; |
| 72 | + width: 100%; |
| 73 | + } |
| 74 | + th, |
| 75 | + td { |
| 76 | + border: 1px solid #ddd; |
| 77 | + text-align: left; |
| 78 | + padding: 8px; |
| 79 | + } |
| 80 | + th { |
| 81 | + background-color: #f2f2f2; |
| 82 | + } |
| 83 | + .pass { |
| 84 | + color: green; |
| 85 | + } |
| 86 | + .fail { |
| 87 | + color: red; |
| 88 | + } |
| 89 | + .warn { |
| 90 | + color: orange; |
| 91 | + } |
| 92 | + .verdict { |
| 93 | + margin-top: 20px; |
| 94 | + font-size: 24px; |
| 95 | + } |
| 96 | + </style> |
| 97 | + <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> |
| 98 | + <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" /> |
| 99 | + <link href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0dHcJqbm5KVlpb7paWl/6Wlpf+Vlpb7mpubkkdHR3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhoeH5sPDw///////o6Sk/3t8fP95enr/i4yM//z8/P/Dw8P/hoeH5gAAAAAAAAAAAAAAAAAAAAAAAAAAb3Bw/vb29v+6u7v//////5ucnP9mZ2f/Zmdn/2hpaf//////2tvb//b29v9vcHD+AAAAAAAAAAAAAAAAhoeH5vb29v9mZ2f/ycrK///////n5+f/Zmdn/2ZnZ/+goaH///////39/f9mZ2f/9vb2/4aHh+YAAAAAR0dHcMPDw/9oaWn/Zmdn//7+/v//////tbW1/2pra/9mZ2f/7+/v//////+6urr/goOD/2doaP/Dw8P/R0dHcJqbm5LOzs7/Zmdn/4iJif//////3d3d/2tsbP+jpKT/cXJy///////19fX/Z2ho/9DQ0P9mZ2f/zs7O/5qbm5KVlpb7jI2N/2ZnZ//c3Nz//////5CRkf9mZ2f/o6Oj/7u8vP//////tre3/2ZnZ//l5eX/Zmdn/4yNjf+Vlpb7paWl/3t8fP9naGj///////////9mZ2f/Zmdn/6Kjo////////////3N0dP9mZ2f/rKys/4iJif97fHz/paWl/6Wlpf96e3v/mpub///////d3d3/Zmdn/2ZnZ/+IiYn///////Pz8/9mZ2f/Zmdn/56env/Y2Nj/e3x8/6Wlpf+Vlpb7i4yM/+vr6///////j4+P/2ZnZ/9mZ2f/0tPT//////+0tLT/Zmdn/2ZnZ//IyMj//Pz8/4yNjf+Vlpb7mpubku7u7v///////////2ZnZ/9mZ2f/Zmdn////////////cnNz/2ZnZ/9naGj////////////V1dX/mpubkkdHR3DDw8P/8fLy/83Nzf+jpKT/b3Bw/87Ozv/c3Nz/3t7e/7S0tP9mZ2f/tba2////////////w8PD/0dHR3AAAAAAhoeH5vb29v9mZ2f/Zmdn/2ZnZ/9mZ2f/Zmdn/2ZnZ/9mZ2f/Zmdn/4SFhf///////v7+/4aHh+YAAAAAAAAAAAAAAABvcHD+9fX1/2doaP9mZ2f/Zmdn/2ZnZ/9mZ2f/Zmdn/2ZnZ/9oaWn/+Pj4/29wcP4AAAAAAAAAAAAAAAAAAAAAAAAAAIaHh+bDw8P/z8/P/4yNjf97fHz/ent7/4uLi//Nzc3/w8PD/4aHh+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0dHcJqbm5KVlpb7paWl/6Wlpf+Vlpb7mpubkkdHR3AAAAAAAAAAAAAAAAAAAAAA+B8AAOAHAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAgAEAAMADAADgBwAA+B8AAA==" rel="icon" type="image/x-icon"> |
| 100 | + </head> |
| 101 | + <body> |
| 102 | + <h1>Проверка сервера на совместимость с ВП</h1> |
| 103 | + <hr> |
| 104 | + <table> |
| 105 | + <tr> |
| 106 | + <th>Проверка</th> |
| 107 | + <th>Статус</th> |
| 108 | + <th>Детали</th> |
| 109 | + </tr> |
| 110 | + <tr> |
| 111 | + <td>Версия PHP</td> |
| 112 | + <td class="<?php echo $phpVersionClass; ?>"><?php echo strtoupper($phpVersionClass); ?></td> |
| 113 | + <td><?php echo $phpVersion; if(strtoupper($phpVersionClass) === "WARN") { echo " | 7.4 это минимальная версия для WP. Если можешь - обновись до 8+"; } ?></td> |
| 114 | + </tr> |
| 115 | + <tr> |
| 116 | + <td>PHP Memory</td> |
| 117 | + <td class="<?php echo $memoryCheckClass; ?>"><?php echo strtoupper($memoryCheckClass); ?></td> |
| 118 | + <td><?php echo ini_get('memory_limit'); if(strtoupper($memoryCheckClass) === "FAIL") { echo " | Мало памяти. Сделай минимум 256M"; } ?></td> |
| 119 | + </tr> |
| 120 | + <tr> |
| 121 | + <td>cURL</td> |
| 122 | + <td class="<?php echo $curlCheckClass; ?>"><?php echo strtoupper($curlCheckClass); ?></td> |
| 123 | + <td><?php echo $curlCheckClass == 'pass' ? 'Модуль установлен' : 'Модуль не найден'; ?></td> |
| 124 | + </tr> |
| 125 | + <tr> |
| 126 | + <td>MySQL</td> |
| 127 | + <td class="<?php echo $mysqlCheckClass; ?>"><?php echo $mysqlCheckClass == 'warn' ? 'WARN' : strtoupper($mysqlCheckClass); ?></td> |
| 128 | + <td><?php echo $mysqlCheckClass == 'warn' ? 'wp-config.php не найден, не могу подключится к базе проверить её.' : ($mysqlCheckClass == 'pass' ? 'БД работает' : $msqlerror); ?></td> |
| 129 | + </tr> |
| 130 | + </table> |
| 131 | + |
| 132 | + <div class="verdict <?php echo $compatibility ? 'pass' : 'fail'; ?>" style="text-align: center !important;"> |
| 133 | + <i><b><?php echo $compatibility ? '<span style="color: green;">ГОТОВ ДЛЯ WORDPRESS\'А</span>' : '<span style="color: red;">НЕ ГОТОВ ДЛЯ WORDPRESS\'А</span>'; ?></b></i> |
| 134 | + </div> |
| 135 | + <hr> |
| 136 | + <div style="width: 100%; height: 200px;"> |
| 137 | + <img src="https://on-tech.tech/images/photo_2023-03-17_13-38-00.jpg" style="object-fit: contain; width:100%; height:100%" > |
| 138 | + </div> |
| 139 | + </body> |
| 140 | +</html> |
0 commit comments