3 final class PhabricatorExtensionsSetupCheck
extends PhabricatorSetupCheck
{
5 public function getDefaultGroup() {
6 return self
::GROUP_PHP
;
9 public function isPreflightCheck() {
13 protected function executeChecks() {
14 // TODO: Make 'mbstring' a soft requirement.
23 // There is a tiny chance we might not need this, but a significant
24 // number of applications require it and it's widely available.
29 foreach ($required as $extension) {
30 if (!extension_loaded($extension)) {
35 if (!extension_loaded('mysqli') && !extension_loaded('mysql')) {
36 $need[] = 'mysqli or mysql';
43 $message = pht('Required PHP extensions are not installed.');
45 $issue = $this->newIssue('php.extensions')
47 ->setName(pht('Missing Required Extensions'))
48 ->setMessage($message);
50 foreach ($need as $extension) {
51 $issue->addPHPExtension($extension);