public function install($version = 'stable', array $options = array()) { $this->logger->quiet(); $this->disable(); $this->logger->setLevel(4); $installer = new ExtensionInstaller($this->logger); $path = $this->meta->getPath(); $name = $this->meta->getName(); // Install local extension if (file_exists($path)) { $this->logger->info("===> Installing {$name} extension..."); $this->logger->debug("Extension path {$path}"); $xml = $installer->runInstall($name, $path, $options); } else { chdir(dirname($path)); $xml = $installer->installFromPecl($name, $version, $options); } // try to rebuild meta from xml, which is more accurate right now if (file_exists($xml)) { $this->logger->warning("===> Switching to xml extension meta"); $this->meta = new ExtensionMetaXml($xml); } $ini = $this->meta->getIniFile() . '.disabled'; $this->logger->info("===> Creating config file {$ini}"); // create extension config file if (file_exists($ini)) { $lines = file($ini); foreach ($lines as &$line) { if (preg_match('#^;\\s*((?:zend_)?extension\\s*=.*)#', $line, $regs)) { $line = $regs[1]; } } file_put_contents($ini, join('', $lines)); } else { if ($this->meta->isZend()) { $makefile = file_get_contents("{$path}/Makefile"); preg_match('/EXTENSION\\_DIR\\s=\\s(.*)/', $makefile, $regs); $content = "zend_extension={$regs[1]}/"; } else { $content = "extension="; } file_put_contents($ini, $content . $this->meta->getSourceFile()); $this->logger->debug("{$ini} is created."); } $this->logger->info("===> Enabling extension..."); $this->enable(); $this->logger->info("Done."); return $path; }