libasynql  3.2.0
Asynchronous MySQL access library for PocketMine plugins.
ExtensionMissingException.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * libasynql
5  *
6  * Copyright (C) 2018 SOFe
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 declare(strict_types=1);
22 
23 namespace poggit\libasynql;
24 
27 use function file;
28 use function is_file;
29 use function php_ini_loaded_file;
30 use function strpos;
31 
33  public function __construct(string $extensionName){
34  $instructions = "Please install PHP according to the instructions from http://pmmp.readthedocs.io/en/rtfd/installation.html which provides the $extensionName extension.";
35 
36  $ini = php_ini_loaded_file();
37  if($ini && is_file($ini)){
38  foreach(file($ini) as $i => $line){
39  if(strpos($line, ";extension=") !== false && stripos($line, $extensionName) !== false){
40  $instructions = TextFormat::GOLD . "Please remove the leading semicolon on line " . ($i + 1) . " of $ini and restart the server " . TextFormat::RED . "so that the $extensionName extension can be loaded.";
41  }
42  }
43  }
44 
45  parent::__construct("The $extensionName extension is missing. $instructions");
46  }
47 }