网站install.php,install.php

/**

* EasyAdmin安装程序

*

* 安装完成后建议删除此文件

* @author xiaoyaor

* @website https://www.easyadmin.vip

*/

//报错等级

//error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

//开启错误提示

//ini_set('display_errors', '1');

$checkDirs = [

'app',

'vendor',

'assets' . DIRECTORY_SEPARATOR . 'libs'

];

// 定义根目录

define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR );

// 定义应用目录

define('APP_PATH', ROOT_PATH . 'app' . DIRECTORY_SEPARATOR);

// 定义应用目录

define('CONFIG_PATH', ROOT_PATH . 'config' . DIRECTORY_SEPARATOR);

// 安装包目录

define('INSTALL_PATH', APP_PATH . 'admin' . DIRECTORY_SEPARATOR . 'command' . DIRECTORY_SEPARATOR . 'Install' . DIRECTORY_SEPARATOR);

//错误信息

$errInfo = '';

//程序名称

$sitename = "EasyAdmin";

//ENV文件

$Env = ROOT_PATH . '.env';

$link = array(

'qqun' => "https://shang.qq.com/wpa/qunwpa?idkey=ce12bc3cbc9a2ccbca97d287609f61dffc0347a62a204780271be3ef12f70129",

'gitee' => 'https://gitee.com/gitshenyin/EasyAdmin',

'github' => 'https://github.com/xiaoyaor/EasyAdmin',

'home' => 'https://www.easyadmin.vip?ref=install',

'ask' => 'https://ask.easyadmin.vip?ref=install',

'doc' => 'https://doc.easyadmin.vip?ref=install',

);

//写ini文件[env]

function write_ini_file($assoc_arr, $path)

{

$content = "";

foreach ($assoc_arr as $key=>$elem)

{

if(!is_array($elem))

{

$content .= $key." = ".$elem."\n";

}

else

{

$content .= "[".$key."]\n";

foreach ($elem as $key2=>$elem2)

{

if(is_array($elem2))

{

for($i=0;$i

{

$content .= $key2."[] = ".$elem2[$i]."\n";

}

}

else if($elem2=="") $content .= $key2." = \n";

else $content .= $key2." = ".$elem2."\n";

}

}

$content .= "\n";

}

if (!$handle = fopen($path, 'w'))

{

return false;

}

if (!fwrite($handle, $content))

{

return false;

}

fclose($handle);

return true;

}

if (is_file($Env)) {

$errInfo = "当前已经安装{$sitename},如果需要重新安装,请手动移除.env文件";

}

else

{

if (version_compare(PHP_VERSION, '7.1.0', '

$errInfo = "当前版本(" . PHP_VERSION . ")过低,请使用PHP7.1以上版本";

}

else

{

if (!extension_loaded("PDO")) {

$errInfo = "当前未开启PDO,无法进行安装";

} else {

foreach ($checkDirs as $k => $v) {

if (!is_dir(ROOT_PATH . $v)) {

$errInfo = '当前代码仅包含核心代码,请前往官网下载完整包或资源包覆盖后再尝试安装,立即前往下载';

break;

}

}

}

}

}

// 当前是POST请求

if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') {

if ($errInfo) {

echo $errInfo;

exit;

}

$err = '';

$mysqlHostname = isset($_POST['mysqlHost']) ? $_POST['mysqlHost'] : '127.0.0.1';

$mysqlHostport = isset($_POST['mysqlHostport']) ? $_POST['mysqlHostport'] : 3306;

$hostArr = explode(':', $mysqlHostname);

if (count($hostArr) > 1) {

$mysqlHostname = $hostArr[0];

$mysqlHostport = $hostArr[1];

}

$mysqlUsername = isset($_POST['mysqlUsername']) ? $_POST['mysqlUsername'] : 'root';

$mysqlPassword = isset($_POST['mysqlPassword']) ? $_POST['mysqlPassword'] : '';

$mysqlDatabase = isset($_POST['mysqlDatabase']) ? $_POST['mysqlDatabase'] : 'easyadmin';

$mysqlPrefix = isset($_POST['mysqlPrefix']) ? $_POST['mysqlPrefix'] : 'ea_';

// $adminUsername = isset($_POST['adminUsername']) ? $_POST['adminUsername'] : 'admin';

// $adminPassword = isset($_POST['adminPassword']) ? $_POST['adminPassword'] : '123456';

// $adminPasswordConfirmation = isset($_POST['adminPasswordConfirmation']) ? $_POST['adminPasswordConfirmation'] : '123456';

// $adminEmail = isset($_POST['adminEmail']) ? $_POST['adminEmail'] : 'admin@admin.com';

//

// if (!preg_match("/^\w{3,12}$/", $adminUsername)) {

// echo "用户名只能由3-12位数字、字母、下划线组合";

// exit;

// }

// if (!preg_match("/^[\S]{6,16}$/", $adminPassword)) {

// echo "密码长度必须在6-16位之间,不能包含空格";

// exit;

// }

// if ($adminPassword !== $adminPasswordConfirmation) {

// echo "两次输入的密码不一致";

// exit;

// }

try {

//检测能否读取安装文件

// $sql = @file_get_contents(INSTALL_PATH . 'easyadmin.sql');

// if (!$sql) {

// throw new Exception("无法读取app/admin/command/Install/easyadmin.sql文件,请检查是否有读权限");

// }

// $sql = str_replace("`ea_", "`{$mysqlPrefix}", $sql);

//连接数据库

$pdo = new PDO("mysql:host={$mysqlHostname};port={$mysqlHostport}", $mysqlUsername, $mysqlPassword, array(

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

));

//检测是否支持innodb存储引擎

$pdoStatement = $pdo->query("SHOW VARIABLES LIKE 'innodb_version'");

$result = $pdoStatement->fetch();

if (!$result) {

throw new Exception("当前数据库不支持innodb存储引擎,请开启后再重新尝试安装");

}

//新建数据库并导入sql

$pdo->query("CREATE DATABASE IF NOT EXISTS `{$mysqlDatabase}` CHARACTER SET utf8 COLLATE utf8_general_ci;");

//$pdo->query("USE `{$mysqlDatabase}`");

//$pdo->exec($sql);

//新建随机后台地址

$x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$adminName = substr(str_shuffle(str_repeat($x, ceil(10 / strlen($x)))), 1, 6);

//写入ENV

$EnvData = array(

'APP_DEBUG' => 'true',

'APP_HTML' => 'true',

'APP' => array(

'DEFAULT_TIMEZONE' => 'Asia/Shanghai',

'ADMIN' => $adminName,

),

'DATABASE' => array(

'TYPE' => 'mysql',

'HOSTNAME' => $mysqlHostname,

'DATABASE' => $mysqlDatabase,

'USERNAME' => $mysqlUsername,

'PASSWORD' => $mysqlPassword,

'HOSTPORT' => $mysqlHostport,

'CHARSET' => 'utf8',

'DEBUG' => 'true',

'PREFIX' => $mysqlPrefix,

),

'LANG' => array(

'default_lang' => 'zh-cn',

)

);

$result=write_ini_file($EnvData, $Env);

if (!$result) {

throw new Exception("无法写入数据库信息到.env文件,请检查是否有写权限");

}

//用户账户写入数据库

// $newSalt = substr(md5(uniqid(true)), 0, 6);

// $newPassword = md5(md5($adminPassword) . $newSalt);

// $pdo->query("UPDATE {$mysqlPrefix}admin SET username = '{$adminUsername}', email = '{$adminEmail}',password = '{$newPassword}', salt = '{$newSalt}' WHERE username = 'admin'");

//输出成功信息

echo "success|{$adminName}";

} catch (PDOException $e) {

$err = $e->getMessage();

} catch (Exception $e) {

$err = $e->getMessage();

}

echo $err;

exit;

}

?>

<?php echo $sitename; ?>安装引导程序

body {

background: beige;

margin: 0;

padding: 0;

line-height: 1.5;

-webkit-font-smoothing: antialiased;

-moz-osx-font-smoothing: grayscale;

}

body, input, button {

font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, 'Microsoft Yahei', Arial, sans-serif;

font-size: 14px;

color: #763636;

}

.container {

max-width: 660px;

margin: 0 auto;

padding: 20px;

text-align: center;

}

a {

color: #18bc9c;

text-decoration: none;

}

a:hover {

text-decoration: underline;

}

h1 {

margin-top: 0;

margin-bottom: 10px;

}

h2 {

font-size: 28px;

font-weight: normal;

color: #3C5675;

margin-bottom: 0;

margin-top: 0;

}

form {

margin-top: 40px;

}

.form-group {

margin-bottom: 20px;

}

.form-group .form-field:first-child input {

border-top-left-radius: 4px;

border-top-right-radius: 4px;

}

.form-group .form-field:last-child input {

border-bottom-left-radius: 4px;

border-bottom-right-radius: 4px;

}

.form-field input {

background: #efefbd;

margin: 0 0 1px;

border: 2px solid transparent;

transition: background 0.2s, border-color 0.2s, color 0.2s;

width: 100%;

padding: 15px 15px 15px 180px;

box-sizing: border-box;

}

.form-field label {

float: left;

width: 160px;

text-align: right;

margin-right: -160px;

position: relative;

margin-top: 18px;

font-size: 14px;

pointer-events: none;

opacity: 0.7;

}

button, .btn {

background: #008a6f;

color: #fff;

border: 0;

font-weight: bold;

border-radius: 4px;

cursor: pointer;

padding: 15px 30px;

-webkit-appearance: none;

}

button[disabled] {

opacity: 0.5;

}

.form-buttons {

height: 52px;

line-height: 52px;

}

.form-buttons .btn {

margin-right: 5px;

}

#error, .error, #success, .success, #warmtips, .warmtips {

background: #D83E3E;

color: #fff;

padding: 15px 20px;

border-radius: 4px;

margin-bottom: 20px;

}

#success {

background: #18bc9c;

}

#error a, .error a {

color: white;

text-decoration: underline;

}

#warmtips {

background: #ffcdcd;

font-size: 14px;

color: #e74c3c;

}

#warmtips a {

background: #ffffff7;

display: block;

height: 30px;

line-height: 30px;

margin-top: 10px;

color: #e21a1a;

border-radius: 3px;

}

qrcode.png

安装 <?php echo $sitename; ?>

若你在安装中遇到麻烦可点击 安装文档

href="<?php echo $link['ask']; ?>" target="_blank">问答社区

href="<?php echo $link['qqun']; ?>">QQ交流群

MySQL 数据库地址

MySQL 数据库名

MySQL 用户名

MySQL 密码

MySQL 数据表前缀

MySQL 端口号

>点击安装

$(function () {

$('form :input:first').select();

$('form').on('submit', function (e) {

e.preventDefault();

var form = this;

var $button = $(this).find('button')

.text('安装中...')

.prop('disabled', true);

$.post('', $(this).serialize())

.done(function (ret) {

if (ret.substr(0, 7) === 'success') {

var retArr = ret.split(/\|/);

$('#error').hide();

$(".form-group", form).remove();

$button.remove();

$("#success").text("安装成功!开始你的<?php echo $sitename; ?>之旅吧!").show();

$buttons = $(".form-buttons", form);

$('访问首页').appendTo($buttons);

if (typeof retArr[1] !== 'undefined' && retArr[1] !== '') {

var url = location.href.replace(/install\.php/, retArr[1]);

$("#warmtips").html('温馨提示:请将以下后台登录入口添加到你的收藏夹,为了你的网站安全,不要泄漏或发送给他人!可在后台系统设置修改!' + url + '').show();

$('访问后台').appendTo($buttons);

}

localStorage.setItem("fastep", "installed");

} else {

$('#error').show().text(ret);

$button.prop('disabled', false).text('点击安装');

$("html,body").animate({

scrollTop: 0

}, 500);

}

})

.fail(function (data) {

$('#error').show().text('发生错误:\n\n' + data.responseText);

$button.prop('disabled', false).text('点击安装');

$("html,body").animate({

scrollTop: 0

}, 500);

});

return false;

});

});

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: install/install.inc.php:11 stack trace 是指在文件 install/install.inc.php 的第11行出现了错误,并且此错误也被记录在一个堆栈跟踪里。 堆栈跟踪是一种记录错误发生的路径的机制。它会告诉我们在错误发生之前执行了哪些代码。通过堆栈跟踪,我们可以追踪错误的起因,帮助我们进行修复。 在这种情况下,根据 "install/install.inc.php:11 stack trace",我们可以知道在 install/install.inc.php 文件的第11行发生了错误,并且这个错误可能会被记录在堆栈跟踪中。 如果我们想要解决这个问题,首先就需要打开 install/install.inc.php 文件并查看第11行的代码。根据堆栈跟踪的信息,我们还可以查看在错误发生前的代码,这样可以更好地理解错误的背景。 此外,我们还可以根据堆栈跟踪中记录的其他信息,如之前执行的函数或方法的调用堆栈,来更好地理解问题并找到解决方案。 简而言之,"install/install.inc.php:11 stack trace" 是指在 install/install.inc.php 文件的第11行发生了错误,并且这个错误的相关信息被记录在一个堆栈跟踪里,通过分析堆栈跟踪的信息,我们可以找到并解决问题。 ### 回答2: install/install.inc.php:11 stack trace 指的是在安装过程中遇到的错误或异常信息所在的文件和行号。stack trace 是用于追踪程序执行过程中所经过的函数调用栈的一种机制。 在这个具体的例子中,install/install.inc.php 代表在安装过程中发生了错误或异常的文件路径和名称。:11 表示错误或异常发生在该文件的第11行。 stack trace 提供了关于程序执行过程中函数调用栈的详细信息,可以帮助开发者追踪错误原因。通过查看 stack trace,开发者可以根据错误发生的位置和调用栈信息,找到错误的根源并进行修复。 需要注意的是,没有提供具体的错误或异常信息,所以无法给出更具体的回答。但是一般来说,遇到这样的错误或异常信息,开发者应该根据具体情况仔细检查 install.inc.php 文件中的第11行代码,并结合相关的日志信息或其他错误提示,来排查和修复问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值