phpサイトオンラインインストール
6090 ワード
個人的にオープンソースシステムの方法を研究し、文章はまだ整理中・・・
手順1:インストールウィザード、プロトコルの使用
ステップ2:環境検出
ステップ3:データベース構成、データベース名、接頭辞、アカウント、パスワード、管理者情報を入力します.
コミット情報はajaxyで検証され、リンクが戻って再入力されないようにします.
ステップ4:データベースのインポート
ajax方式は実行して、長い時間に多くの表を実行することができて、先にnを-1に等しくさせて、バックグラウンドは識別して先にデータベース名を創立してデータベースファイルを読み出して、分割してsql方法を実行します
ステップ5:インストールが完了し、バックグラウンドとトップページへのジャンプを促す
手順1:インストールウィザード、プロトコルの使用
ステップ2:環境検出
//
if (phpversion() < 5) {
die(' PHP5+MYSQL >=5.0 , PHP :' . phpversion());
}
$phpv = @ phpversion();
$os = PHP_OS;
//$os = php_uname();
$tmp = function_exists('gd_info') ? gd_info() : array();
$server = $_SERVER["SERVER_SOFTWARE"];
$host = (empty($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_HOST"] : $_SERVER["SERVER_ADDR"]);
$name = $_SERVER["SERVER_NAME"];
$max_execution_time = ini_get('max_execution_time');
$allow_reference = (ini_get('allow_call_time_pass_reference') ? '[√]On' : '[×]Off');
$allow_url_fopen = (ini_get('allow_url_fopen') ? '[√]On' : '[×]Off');
$safe_mode = (ini_get('safe_mode') ? '[×]On' : '[√]Off');
$err = 0;
if (empty($tmp['GD Version'])) {
$gd = '[×]Off';
$err++;
} else {
$gd = '[√]On ' . $tmp['GD Version'];
}
if (function_exists('mysqli_connect')) {
$mysql = '√ ';
} else {
$mysql = '√ mysqli ';
$err++;
}
if (ini_get('file_uploads')) {
$uploadSize = '√ ' . ini_get('upload_max_filesize');
} else {
$uploadSize = '√ ';
}
if (function_exists('session_start')) {
$session = '√ ';
} else {
$session = '√ ';
$err++;
}
if(function_exists('curl_init')){
$curl = '[√] ';
}else{
$curl = '[×] ';
$err++;
}
if(function_exists('file_put_contents')){
$file_put_contents = '[√] ';
}else{
$file_put_contents = '[×] ';
$err++;
}
ステップ3:データベース構成、データベース名、接頭辞、アカウント、パスワード、管理者情報を入力します.
コミット情報はajaxyで検証され、リンクが戻って再入力されないようにします.
$dbName = strtolower(trim($_POST['dbName']));
$_POST['dbport'] = $_POST['dbport'] ? $_POST['dbport'] : '3306';
if ($_GET['testdbpwd']) {
$dbHost = $_POST['dbHost'];
$conn = @mysqli_connect($dbHost, $_POST['dbUser'], $_POST['dbPwd'],NULL,$_POST['dbport']);
if (mysqli_connect_errno($conn)){
die(json_encode(0));
} else {
$result = mysqli_query($conn,"SELECT @@global.sql_mode");
$result = $result->fetch_array();
$version = mysqli_get_server_info($conn);
if ($version >= 5.7)
{
if(strstr($result[0],'STRICT_TRANS_TABLES') || strstr($result[0],'STRICT_ALL_TABLES') || strstr($result[0],'TRADITIONAL') || strstr($result[0],'ANSI'))
exit(json_encode(-1));
}
$result = mysqli_query($conn,"select count(table_name) as c from information_schema.`TABLES` where table_schema='$dbName'");
$result = $result->fetch_array();
if($result['c'] > 0)
exit(json_encode(-2));
exit(json_encode(1));
}
}
ステップ4:データベースのインポート
ajax方式は実行して、長い時間に多くの表を実行することができて、先にnを-1に等しくさせて、バックグラウンドは識別して先にデータベース名を創立してデータベースファイルを読み出して、分割してsql方法を実行します
//
$sqldata = file_get_contents(SITEDIR . 'install/' . $sqlFile);
$sqlFormat = sql_split($sqldata, $dbPrefix); // $dbPrefix
function sql_split($sql, $tablepre) {
if ($tablepre != "tp_")
$sql = str_replace("tp_", $tablepre, $sql);
$sql = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8", $sql);
$sql = str_replace("\r", "
", $sql);
$ret = array();
$num = 0;
$queriesarray = explode(";
", trim($sql));
unset($sql);
foreach ($queriesarray as $query) {
$ret[$num] = '';
$queries = explode("
", trim($query));
$queries = array_filter($queries);
foreach ($queries as $query) {
$str1 = substr($query, 0, 1);
if ($str1 != '#' && $str1 != '-')
$ret[$num] .= $query;
}
$num++;
}
return $ret;
}
var n=-1;
var data = <?php echo json_encode($_POST);?>;
$.ajaxSetup ({ cache: false });
function reloads(n) {
var url = "<?php echo $_SERVER['PHP_SELF']; ?>?step=4&install=1&n="+n;
$.ajax({
type: "POST",
url: url,
data: data,
dataType: 'json',
beforeSend:function(){
},
success: function(msg){
if(msg.n=='999999'){
$('#dosubmit').attr("disabled",false);
$('#dosubmit').removeAttr("disabled");
$('#dosubmit').removeClass("nonext");
setTimeout('gonext()',2000);
}
if(msg.n>=0){
$('#loginner').append(msg.msg);
reloads(msg.n);
}else{
//alert(' , , !');
alert(msg.msg);
}
}
});
}
function gonext(){
window.location.href='<?php echo $_SERVER['PHP_SELF']; ?>?step=5';
}
$(document).ready(function(){
reloads(n);
})
ステップ5:インストールが完了し、バックグラウンドとトップページへのジャンプを促す