123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?php
- /**
- * @name eolinker ams open source,eolinker开源版本
- * @link https://www.eolinker.com/
- * @package eolinker
- * @author www.eolinker.com 广州银云信息科技有限公司 ©2015-2018
- * eoLinker是目前全球领先、国内最大的在线API接口管理平台,提供自动生成API文档、API自动化测试、Mock测试、团队协作等功能,旨在解决由于前后端分离导致的开发效率低下问题。
- * 如在使用的过程中有任何问题,欢迎加入用户讨论群进行反馈,我们将会以最快的速度,最好的服务态度为您解决问题。
- *
- * eoLinker AMS开源版的开源协议遵循Apache License 2.0,如需获取最新的eolinker开源版以及相关资讯,请访问:https://www.eolinker.com/#/os/download
- *
- * 官方网站:https://www.eolinker.com/
- * 官方博客以及社区:http://blog.eolinker.com/
- * 使用教程以及帮助:http://help.eolinker.com/
- * 商务合作邮箱:market@eolinker.com
- * 用户讨论QQ群:284421832
- */
- class InstallModule
- {
- /**
- * 检测环境
- * @param $dbURL string 数据库主机地址
- * @param $dbName string 数据库名
- * @param $dbUser string 数据库用户名
- * @param $dbPassword string 数据库密码
- * @return array
- */
- public function checkoutEnv(&$dbURL, &$dbName, &$dbUser, &$dbPassword)
- {
- $result = array('fileWrite' => 0, 'db' => 0, 'curl' => 0, 'mbString' => 0, 'sessionPath' => 0, 'isInstalled' => 0);
- //检测配置目录写入权限
- try {
- if (file_put_contents(PATH_FW . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'fileWriteTest.txt', 'ok')) {
- $result['fileWrite'] = 1;
- unlink(PATH_FW . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'fileWriteTest.txt');
- //检测导出目录写入权限
- if (file_put_contents('./dump' . DIRECTORY_SEPARATOR . 'fileWriteTest.txt', 'ok')) {
- $result['fileWrite'] = 1;
- unlink('./dump' . DIRECTORY_SEPARATOR . 'fileWriteTest.txt');
- //检测根目录写入权限
- if (file_put_contents('../fileWriteTest.txt', 'ok')) {
- $result['fileWrite'] = 1;
- unlink('../fileWriteTest.txt');
- } else
- $result['fileWrite'] = 0;
- } else
- $result['fileWrite'] = 0;
- } else
- $result['fileWrite'] = 0;
- } catch (\Exception $e) {
- $result['fileWrite'] = '0';
- $result['fileWriteError'] = $e->getMessage();
- }
- //检测数据库连接
- try {
- $dbURL = explode(':', $dbURL);
- if (empty($dbURL[1]))
- $dbURL[1] = '3306';
- if (!class_exists('PDO')) {
- $result['db'] = 0;
- } else {
- $conInfo = 'mysql:host=' . $dbURL[0] . ';port=' . $dbURL[1] . ';dbname=' . $dbName . ';charset=utf8';
- if ($con = new \PDO($conInfo, $dbUser, $dbPassword)) {
- $result['db'] = 1;
- //检测数据库是否有内容(已经安装过)
- $stat = $con->query("SELECT * FROM eo_user;");
- if($stat) {
- $table_name = $stat -> fetch(\PDO::FETCH_ASSOC);
- if ($table_name) {
- $result['isInstalled'] = 1;
- } else {
- $result['isInstalled'] = 0;
- }
- }else{
- $result['isInstalled'] = 0;
- }
- } else {
- $result['db'] = 0;
- }
- }
- } catch (\Exception $e) {
- $result['db'] = 0;
- $result['dbError'] = $e->getMessage();
- }
- //检测CURL
- try {
- if (!function_exists('curl_init')) {
- $result['curl'] = 0;
- } else {
- $ch = curl_init(realpath('./index.php'));
- if ($ch) {
- curl_close($ch);
- $result['curl'] = 1;
- } else
- $result['curl'] = 0;
- }
- } catch (\Exception $e) {
- $result['curl'] = 0;
- $result['curlError'] = $e->getMessage();
- }
- //检测mbString
- try {
- if (!function_exists('mb_strlen')) {
- $result['mbString'] = 0;
- } else {
- $len = mb_strlen('test', 'utf8');
- if ($len) {
- $result['mbString'] = 1;
- } else {
- $result['mbString'] = 0;
- }
- }
- } catch (\Exception $e) {
- $result['mbString'] = 0;
- $result['mbStringError'] = $e->getMessage();
- }
- //检测session路径写入权限
- try {
- if (session_save_path() == '') {
- $session_path = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? 'C:/Windows/Temp' : '/tmp';
- } else {
- $session_path = session_save_path();
- }
- if (is_writable($session_path)) {
- $result['sessionPath'] = 1;
- } else {
- $result['sessionPath'] = 0;
- }
- } catch (\Exception $e) {
- $result['sessionPath'] = 0;
- $result['sessionPathError'] = $e->getMessage();
- }
- return $result;
- }
- /**
- * 写入配置文件
- * @param $dbURL string 数据库主机地址
- * @param $dbName string 数据库名
- * @param $dbUser string 数据库用户名
- * @param $dbPassword string 数据库密码
- * @param $websiteName string 网站名称
- * @param $language string 语言
- * @return bool
- */
- public function createConfigFile(&$dbURL, &$dbName, &$dbUser, &$dbPassword, &$websiteName, &$language)
- {
- if (file_exists(PATH_FW . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'eo_config.php')) {
- //不存在配置文件,需要跳转至引导页面进行安装
- unlink(realpath(PATH_FW . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'eo_config.php'));
- }
- $dbURL = explode(':', $dbURL);
- if (empty($dbURL[1]))
- $dbURL[1] = '3306';
- $websiteName = isset($websiteName) ? $websiteName : 'eolinker开源版';
- $config = "<?php
- //主机地址
- defined('DB_URL') or define('DB_URL', '{$dbURL[0]}');
- //主机端口,默认mysql为3306
- defined('DB_PORT') or define('DB_PORT', '{$dbURL[1]}');
- //连接数据库的用户名
- defined('DB_USER') or define('DB_USER', '{$dbUser}');
- //连接数据库的密码,推荐使用随机生成的字符串
- defined('DB_PASSWORD') or define('DB_PASSWORD', '{$dbPassword}');
- //数据库名
- defined('DB_NAME') or define('DB_NAME', '{$dbName}');
- //是否允许新用户注册
- defined('ALLOW_REGISTER') or define('ALLOW_REGISTER', TRUE);
- //是否允许更新项目,如果设置为FALSE,那么自动更新和手动更新都将失效
- defined('ALLOW_UPDATE') or define('ALLOW_UPDATE', TRUE);
- //网站名称
- defined('WEBSITE_NAME') or define('WEBSITE_NAME', '{$websiteName}');
- //数据表前缀
- defined('DB_TABLE_PREFIXION') or define('DB_TABLE_PREFIXION', 'eo');
- //语言
- defined('LANGUAGE') or define ('LANGUAGE', '{$language}');
- ?>";
- if ($configFile = file_put_contents(PATH_FW . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'eo_config.php', $config))
- return TRUE;
- else
- return FALSE;
- }
- /**
- * 安装数据库
- */
- public
- function installDatabase()
- {
- //读取数据库文件
- $sql = file_get_contents(PATH_FW . DIRECTORY_SEPARATOR . 'db/eolinker_os_mysql.sql');
- $sqlArray = array_filter(explode(';', $sql));
- $dao = new InstallDao;
- $result = $dao->installDatabase($sqlArray);
- return $result;
- }
- }
- ?>
|