server_status.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. @extends('backend.layouts.app')
  2. @section('content')
  3. <div class="row">
  4. <div class="col-lg-10 col-xxl-8 mx-auto" style="flex: 0 0 100%; max-width: 100%;">
  5. <div class="card">
  6. <div class="card-header">
  7. <h3 class="h6 mb-0">{{ translate('Server information') }}</h3>
  8. </div>
  9. <div class="card-body">
  10. <table class="table table-striped aiz-table">
  11. <thead>
  12. <tr>
  13. <th>{{ translate('Name') }}</th>
  14. <th data-breakpoints="lg">{{ translate('Current Version') }}</th>
  15. <th data-breakpoints="lg">{{ translate('Required Version') }}</th>
  16. <th>{{ translate('Status') }}</th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <tr>
  21. <td>Php versions</td>
  22. <td>{{ phpversion() }}</td>
  23. <td>7.3 or 7.4</td>
  24. <td>
  25. @if (floatval(phpversion()) >= 7.3 && floatval(phpversion()) <= 7.4)
  26. <i class="las la-check text-success"></i>
  27. @else
  28. <i class="las la-times text-danger"></i>
  29. @endif
  30. </td>
  31. </tr>
  32. <tr>
  33. <td>MySQL</td>
  34. <td>
  35. @php
  36. $results = DB::select( DB::raw("select version()") );
  37. $mysql_version = $results[0]->{'version()'};
  38. @endphp
  39. {{ $mysql_version }}
  40. </td>
  41. <td>5.6+</td>
  42. <td>
  43. @if ($mysql_version >= 5.6)
  44. <i class="las la-check text-success"></i>
  45. @else
  46. <i class="las la-times text-danger"></i>
  47. @endif
  48. </td>
  49. </tr>
  50. </tbody>
  51. </table>
  52. </div>
  53. </div>
  54. <div class="card">
  55. <div class="card-header">
  56. <h3 class="h6 mb-0">{{ translate('php.ini Config') }}</h3>
  57. </div>
  58. <div class="card-body">
  59. <table class="table table-striped aiz-table">
  60. <thead>
  61. <tr>
  62. <th>{{ translate('Config Name') }}</th>
  63. <th data-breakpoints="lg">{{ translate('Current') }}</th>
  64. <th data-breakpoints="lg">{{ translate('Recommended') }}</th>
  65. <th>{{ translate('Status') }}</th>
  66. </tr>
  67. </thead>
  68. <tbody>
  69. <tr>
  70. <td>file_uploads</td>
  71. <td>
  72. @if(ini_get('file_uploads') == 1)
  73. On
  74. @else
  75. Off
  76. @endif
  77. </td>
  78. <td>On</td>
  79. <td>
  80. @if (ini_get('file_uploads') == 1)
  81. <i class="las la-check text-success"></i>
  82. @else
  83. <i class="las la-times text-danger"></i>
  84. @endif
  85. </td>
  86. </tr>
  87. <tr>
  88. <td>max_file_uploads</td>
  89. <td>
  90. {{ ini_get('max_file_uploads') }}
  91. </td>
  92. <td>20+</td>
  93. <td>
  94. @if (ini_get('max_file_uploads') >= 20)
  95. <i class="las la-check text-success"></i>
  96. @else
  97. <i class="las la-times text-danger"></i>
  98. @endif
  99. </td>
  100. </tr>
  101. <tr>
  102. <td>upload_max_filesize</td>
  103. <td>
  104. {{ ini_get('upload_max_filesize') }}
  105. </td>
  106. <td>128M+</td>
  107. <td>
  108. @if (str_replace(['M','G'],"", ini_get('upload_max_filesize')) >= 128)
  109. <i class="las la-check text-success"></i>
  110. @else
  111. <i class="las la-times text-danger"></i>
  112. @endif
  113. </td>
  114. </tr>
  115. <tr>
  116. <td>post_max_size</td>
  117. <td>
  118. {{ ini_get('post_max_size') }}
  119. </td>
  120. <td>128M+</td>
  121. <td>
  122. @if (str_replace(['M','G'],"", ini_get('post_max_size')) >= 128)
  123. <i class="las la-check text-success"></i>
  124. @else
  125. <i class="las la-times text-danger"></i>
  126. @endif
  127. </td>
  128. </tr>
  129. <tr>
  130. <td>allow_url_fopen</td>
  131. <td>
  132. @if(ini_get('allow_url_fopen') == 1)
  133. On
  134. @else
  135. Off
  136. @endif
  137. </td>
  138. <td>On</td>
  139. <td>
  140. @if (ini_get('allow_url_fopen') == 1)
  141. <i class="las la-check text-success"></i>
  142. @else
  143. <i class="las la-times text-danger"></i>
  144. @endif
  145. </td>
  146. </tr>
  147. <tr>
  148. <td>max_execution_time</td>
  149. <td>
  150. @if(ini_get('max_execution_time') == '-1')
  151. Unlimited
  152. @else
  153. {{ ini_get('max_execution_time') }}
  154. @endif
  155. </td>
  156. <td>600+</td>
  157. <td>
  158. @if (ini_get('max_execution_time') == -1 || ini_get('max_execution_time') >= 600)
  159. <i class="las la-check text-success"></i>
  160. @else
  161. <i class="las la-times text-danger"></i>
  162. @endif
  163. </td>
  164. </tr>
  165. <tr>
  166. <td>max_input_time</td>
  167. <td>
  168. @if(ini_get('max_input_time') == '-1')
  169. Unlimited
  170. @else
  171. {{ ini_get('max_input_time') }}
  172. @endif
  173. </td>
  174. <td>120+</td>
  175. <td>
  176. @if (ini_get('max_input_time') == -1 || ini_get('max_input_time') >= 120)
  177. <i class="las la-check text-success"></i>
  178. @else
  179. <i class="las la-times text-danger"></i>
  180. @endif
  181. </td>
  182. </tr>
  183. <tr>
  184. <td>max_input_vars</td>
  185. <td>
  186. {{ ini_get('max_input_vars') }}
  187. </td>
  188. <td>1000+</td>
  189. <td>
  190. @if (ini_get('max_input_vars') >= 1000)
  191. <i class="las la-check text-success"></i>
  192. @else
  193. <i class="las la-times text-danger"></i>
  194. @endif
  195. </td>
  196. </tr>
  197. <tr>
  198. <td>memory_limit</td>
  199. <td>
  200. @if(ini_get('memory_limit') == '-1')
  201. Unlimited
  202. @else
  203. {{ ini_get('memory_limit') }}
  204. @endif
  205. </td>
  206. <td>256M+</td>
  207. <td>
  208. @php
  209. $memory_limit = ini_get('memory_limit');
  210. if (preg_match('/^(\d+)(.)$/', $memory_limit, $matches)) {
  211. if ($matches[2] == 'G') {
  212. $memory_limit = $matches[1] * 1024 * 1024 * 1024; // nnnM -> nnn GB
  213. } else if ($matches[2] == 'M') {
  214. $memory_limit = $matches[1] * 1024 * 1024; // nnnM -> nnn MB
  215. } else if ($matches[2] == 'K') {
  216. $memory_limit = $matches[1] * 1024; // nnnK -> nnn KB
  217. }
  218. }
  219. @endphp
  220. @if (ini_get('memory_limit') == -1 || $memory_limit >= (256 * 1024 * 1024))
  221. <i class="las la-check text-success"></i>
  222. @else
  223. <i class="las la-times text-danger"></i>
  224. @endif
  225. </td>
  226. </tr>
  227. </tbody>
  228. </table>
  229. </div>
  230. </div>
  231. <div class="card">
  232. <div class="card-header">
  233. <h3 class="h6 mb-0">{{ translate('Extensions information') }}</h3>
  234. </div>
  235. <div class="card-body">
  236. <table class="table table-striped">
  237. <thead>
  238. <tr>
  239. <th>{{ translate('Extension Name') }}</th>
  240. <th>{{ translate('Status') }}</th>
  241. </tr>
  242. </thead>
  243. @php
  244. $loaded_extensions = get_loaded_extensions();
  245. $required_extensions = ['bcmath', 'ctype', 'json', 'mbstring', 'zip', 'zlib', 'openssl', 'tokenizer', 'xml', 'dom', 'curl', 'fileinfo', 'gd', 'pdo_mysql']
  246. @endphp
  247. <tbody>
  248. @foreach ($required_extensions as $extension)
  249. <tr>
  250. <td>{{ $extension }}</td>
  251. <td>
  252. @if(in_array($extension, $loaded_extensions))
  253. <i class="las la-check text-success"></i>
  254. @else
  255. <i class="las la-times text-danger"></i>
  256. @endif
  257. </td>
  258. </tr>
  259. @endforeach
  260. </tbody>
  261. </table>
  262. </div>
  263. </div>
  264. <div class="card">
  265. <div class="card-header">
  266. <h3 class="h6 mb-0">{{ translate('Filesystem Permissions') }}</h3>
  267. </div>
  268. <div class="card-body">
  269. <table class="table table-striped">
  270. <thead>
  271. <tr>
  272. <th>{{ translate('File or Folder') }}</th>
  273. <th>{{ translate('Status') }}</th>
  274. </tr>
  275. </thead>
  276. @php
  277. $required_paths = ['.env', 'public', 'app/Providers', 'app/Http/Controllers', 'storage', 'resources/views']
  278. @endphp
  279. <tbody>
  280. @foreach ($required_paths as $path)
  281. <tr>
  282. <td>{{ $path }}</td>
  283. <td>
  284. @if(is_writable(base_path($path)))
  285. <i class="las la-check text-success"></i>
  286. @else
  287. <i class="las la-times text-danger"></i>
  288. @endif
  289. </td>
  290. </tr>
  291. @endforeach
  292. </tbody>
  293. </table>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. @endsection