红穆笔记
首頁 實用收藏 帝國cms 自動安裝腳本後跳轉登錄頁面
實用收藏 帝國插件

帝國cms 自動安裝腳本後跳轉登錄頁面

帝国cms 自动安装脚本后跳转登录页面
真是累,每次安裝測試帝國模板都需要手動刪除install.lock文件,然後再下一步下一步! 下一步完成後,還需要你自己填寫數據庫和初始密碼!

真是煩死了!

於是乎,我寫了一個PHP,大致功能如下: 不用手動訪問/e/install目錄和刪除lock文件 運行PHP,自動安裝帝國cms,並且跳轉帝國後臺登錄! 初始賬號:admin 初始密碼:123456 目前只適合帝國cms7.5,以後可能會增加帝國cms7.2 上代碼:
<?php
$sql_name = "test_4s5_cn";
$sql_pass = "ggggggggggggg";
// 下載帝國安裝包和配置文件
downloadAndExtract(__DIR__."/e/install/","http://api.4s5.cn/cdn/ecms/zip/install.zip");
downloadAndExtract(__DIR__."/e/config/","http://api.4s5.cn/cdn/ecms/zip/config.zip");
importSqlZip("http://api.4s5.cn/cdn/ecms/zip/mysql.sql.zip",$sql_name,$sql_name,$sql_pass);
// 配置數據庫config文件
$config_file = __DIR__."/e/config/config.php";
modifyDatabaseConfig($config_file,['dbusername' => $sql_name, 'dbpassword' => $sql_pass, 'dbname' => $sql_name, 'dbtbpre' => "phome_"]);
// 安裝install的數據庫
// 獲取當前域名
$domain = $_SERVER['HTTP_HOST'];
// 拼接 URL
$url = "http://{$domain}/e/admin";
// 跳轉到 URL
header("Location: $url");




// 自定義函數
/**
 * 從遠程URL下載包含SQL文件的ZIP壓縮文件,解壓縮SQL文件到指定目錄,然後將數據導入到MySQL數據庫中。
 *
 * @param string $remoteUrl 遠程ZIP文件的URL地址
 * @param string $dbName 目標MySQL數據庫的名稱
 * @param string $dbUser 目標MySQL數據庫的用戶名
 * @param string $dbPass 目標MySQL數據庫的密碼
 * @param string $dbHost 目標MySQL數據庫的主機地址,默認爲localhost
 * @param string $sqlDir 解壓縮SQL文件的目錄路徑,默認爲當前文件所在目錄下的path/目錄
 * @throws Exception 如果下載、解壓縮、數據庫操作失敗,則會拋出異常
 */
function importSqlZip($remoteUrl, $dbName, $dbUser, $dbPass, $dbHost = 'localhost', $sqlDir = __DIR__.'/path/') {
    // 創建一個臨時文件用於保存下載的 Zip 文件
    $tempZip = tempnam(sys_get_temp_dir(), 'sql_zip_');

    // 下載遠程 Zip 文件並保存到本地
    $fp = fopen($tempZip, 'w');
    $ch = curl_init($remoteUrl);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    $success = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    if (!$success) {
        throw new Exception('Failed to download the remote SQL ZIP file.');
    }
    // 創建指定目錄
    if (!mkdir($sqlDir, 0777, true)) {
        throw new Exception('Failed to create directory.');
    }

    // 解壓縮文件到指定目錄
    $zip = new ZipArchive();
    if ($zip->open($tempZip) === TRUE) {
        $zip->extractTo($sqlDir);
        $zip->close();
    } else {
        throw new Exception('Failed to extract the SQL ZIP file.');
    }

    // 清空數據庫
    $dsn = "mysql:host=$dbHost;dbname=$dbName";
    $pdo = new PDO($dsn, $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
    foreach ($tables as $table) {
        $pdo->query("DROP TABLE IF EXISTS $table");
    }

    // 導入 SQL 文件
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        $pdo->exec(file_get_contents($file));
    }

    // 刪除臨時文件和 SQL 文件
    unlink($tempZip);
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        unlink($file);
    }
    rmdir($sqlDir);
}




function downloadAndExtract($installDir, $remoteZipUrl) {
    // 刪除指定目錄及其下所有文件
    if (is_dir($installDir)) {
        $files = glob($installDir . '/*');
        foreach ($files as $file) {
            if (is_file($file)) {
                unlink($file);
            } elseif (is_dir($file)) {
                $innerFiles = glob($file . '/*');
                foreach ($innerFiles as $innerFile) {
                    if (is_file($innerFile)) {
                        unlink($innerFile);
                    }
                }
                rmdir($file);
            }
        }
        rmdir($installDir);
    }

    // 創建指定目錄
    if (!mkdir($installDir, 0777, true)) {
        throw new Exception('Failed to create install directory.');
    }

    // 下載遠程 Zip 文件並保存到本地
    $tempZip = tempnam(sys_get_temp_dir(), 'download_');
    $fp = fopen($tempZip, 'w');
    $ch = curl_init($remoteZipUrl);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    $success = curl_exec($ch);
    curl_close($ch);
    fclose($fp);
    if (!$success) {
        throw new Exception('Failed to download the remote ZIP file.');
    }

    // 解壓縮文件到指定目錄
    $zip = new ZipArchive();
    if ($zip->open($tempZip) === TRUE) {
        $zip->extractTo($installDir);
        $zip->close();
    } else {
        throw new Exception('Failed to extract the ZIP file.');
    }

    // 刪除臨時文件
    unlink($tempZip);
}

// 讀取數據庫文件,然後傳入需要替換的數組
function modifyDatabaseConfig($filename, $newConfig) {
  // 讀取配置文件內容
  $file = file_get_contents($filename);
  // 替換配置內容
  
  // 配置文件裏的變量名前綴
    $prefix = '$ecms_config[\'db\']';
    
    // 遍歷新配置,將對應的變量替換爲新值
    foreach ($newConfig as $key => $value) {
        $pattern = '/' . preg_quote($prefix) . '\[\'' . preg_quote($key) . '\'\]\s*=\s*\'[^;]+;/';
        $replace = $prefix . '[\'' . $key . '\'] = \'' . $value . '\';';
        $file = preg_replace($pattern, $replace, $file);
    }
  // 保存文件
  file_put_contents($filename, $file);
}

第二次更新

本次更新了帝國cms7.2版本的安裝,運行PHP自動判斷帝國版本,然後自動安裝
<?php
$sql_name = "test_4s5_cn";
$sql_pass = "wnxxtJTa3y4SPPrr";

if(file_exists(__DIR__."/e/admin/index.php")){
    $string = file_get_contents(__DIR__."/e/admin/index.php");
    // 開始檢查帝國cms版本
    if (strpos($myString, "7.2") !== false) {
        $ecms = 7.5;
    } else {
        $ecms = 7.2;
    }
}else{
    die("未檢測到帝國admin後臺");
}

// 下載帝國安裝包和配置文件
downloadAndExtract(__DIR__."/e/install/","http://api.4s5.cn/cdn/ecms/zip/{$ecms}/install.zip");
downloadAndExtract(__DIR__."/e/config/","http://api.4s5.cn/cdn/ecms/zip/{$ecms}/config.zip");
importSqlZip("http://api.4s5.cn/cdn/ecms/zip/{$ecms}/mysql.sql.zip",$sql_name,$sql_name,$sql_pass);
// 配置數據庫config文件
$config_file = __DIR__."/e/config/config.php";
modifyDatabaseConfig($config_file,['dbusername' => $sql_name, 'dbpassword' => $sql_pass, 'dbname' => $sql_name, 'dbtbpre' => "phome_"]);
// 獲取當前域名
$domain = $_SERVER['HTTP_HOST'];
// 拼接 URL
$url = "http://{$domain}/e/admin";
echo "安裝成功!帝國版本:{$ecms}";
// 停頓三秒鐘後跳轉後臺
echo " <meta http-equiv=\"refresh\" content=\"3;url={$url}\" />";

// 自定義函數
/**
 * 從遠程URL下載包含SQL文件的ZIP壓縮文件,解壓縮SQL文件到指定目錄,然後將數據導入到MySQL數據庫中。
 *
 * @param string $remoteUrl 遠程ZIP文件的URL地址
 * @param string $dbName 目標MySQL數據庫的名稱
 * @param string $dbUser 目標MySQL數據庫的用戶名
 * @param string $dbPass 目標MySQL數據庫的密碼
 * @param string $dbHost 目標MySQL數據庫的主機地址,默認爲localhost
 * @param string $sqlDir 解壓縮SQL文件的目錄路徑,默認爲當前文件所在目錄下的path/目錄
 * @throws Exception 如果下載、解壓縮、數據庫操作失敗,則會拋出異常
 */
function importSqlZip($remoteUrl, $dbName, $dbUser, $dbPass, $dbHost = 'localhost', $sqlDir = __DIR__.'/path/') {
    // 創建一個臨時文件用於保存下載的 Zip 文件
    $tempZip = tempnam(sys_get_temp_dir(), 'sql_zip_');

    // 下載遠程 Zip 文件並保存到本地
    $fp = fopen($tempZip, 'w');
    $ch = curl_init($remoteUrl);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    $success = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    if (!$success) {
        throw new Exception('Failed to download the remote SQL ZIP file.');
    }
    // 創建指定目錄
    if (!mkdir($sqlDir, 0777, true)) {
        throw new Exception('Failed to create directory.');
    }

    // 解壓縮文件到指定目錄
    $zip = new ZipArchive();
    if ($zip->open($tempZip) === TRUE) {
        $zip->extractTo($sqlDir);
        $zip->close();
    } else {
        throw new Exception('Failed to extract the SQL ZIP file.');
    }

    // 清空數據庫
    $dsn = "mysql:host=$dbHost;dbname=$dbName";
    $pdo = new PDO($dsn, $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
    foreach ($tables as $table) {
        $pdo->query("DROP TABLE IF EXISTS $table");
    }

    // 導入 SQL 文件
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        $pdo->exec(file_get_contents($file));
    }

    // 刪除臨時文件和 SQL 文件
    unlink($tempZip);
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        unlink($file);
    }
    rmdir($sqlDir);
}




function downloadAndExtract($installDir, $remoteZipUrl) {
    // 刪除指定目錄及其下所有文件
    if (is_dir($installDir)) {
        $files = glob($installDir . '/*');
        foreach ($files as $file) {
            if (is_file($file)) {
                unlink($file);
            } elseif (is_dir($file)) {
                $innerFiles = glob($file . '/*');
                foreach ($innerFiles as $innerFile) {
                    if (is_file($innerFile)) {
                        unlink($innerFile);
                    }
                }
                rmdir($file);
            }
        }
        rmdir($installDir);
    }

    // 創建指定目錄
    if (!mkdir($installDir, 0777, true)) {
        throw new Exception('Failed to create install directory.');
    }

    // 下載遠程 Zip 文件並保存到本地
    $tempZip = tempnam(sys_get_temp_dir(), 'download_');
    $fp = fopen($tempZip, 'w');
    $ch = curl_init($remoteZipUrl);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    $success = curl_exec($ch);
    curl_close($ch);
    fclose($fp);
    if (!$success) {
        throw new Exception('Failed to download the remote ZIP file.');
    }

    // 解壓縮文件到指定目錄
    $zip = new ZipArchive();
    if ($zip->open($tempZip) === TRUE) {
        $zip->extractTo($installDir);
        $zip->close();
    } else {
        throw new Exception('Failed to extract the ZIP file.');
    }

    // 刪除臨時文件
    unlink($tempZip);
}

// 讀取數據庫文件,然後傳入需要替換的數組
function modifyDatabaseConfig($filename, $newConfig) {
  // 讀取配置文件內容
  $file = file_get_contents($filename);
  // 替換配置內容
  
  // 配置文件裏的變量名前綴
    $prefix = '$ecms_config[\'db\']';
    
    // 遍歷新配置,將對應的變量替換爲新值
    foreach ($newConfig as $key => $value) {
        $pattern = '/' . preg_quote($prefix) . '\[\'' . preg_quote($key) . '\'\]\s*=\s*\'[^;]+;/';
        $replace = $prefix . '[\'' . $key . '\'] = \'' . $value . '\';';
        $file = preg_replace($pattern, $replace, $file);
    }
  // 保存文件
  file_put_contents($filename, $file);
}
微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

帝国cms 文章中间插入相关文章(文章页优化,效果超级好)

帝國cms 文章中間插入相關文章(文章頁優化,效果超級好) 實用收藏 帝國插件

懂的都懂,該功能可以聚合相關文章,由於顯示在正文中間,既可以提升用戶體驗感,又可以達到優化的效果目前發現部分高權重網站都在使用這個功能,於是我研究了幾個小時,寫了這個教程!對於網站優化幫助不是丁點,相信網站優化大佬都懂!這個功能也是一位網站優化大佬給我提出來的,希望對各位站長有幫助!不管你是採集站,…
👁 474
帝国cms AutoTitlePic 自动生成标题图片

帝國cms AutoTitlePic 自動生成標題圖片 實用收藏 帝國插件

AutoTitlePic,自動生成文章標題圖片插件。做網站的時候,很多時候圖片都有版權問題,這時候擁有一款生成縮略圖的插件,這可就很重要了!插件我修改過,新增一個定時生成的功能,可以在夜晚站點流量少的時候自動生成圖片,需要配合寶塔定時任務使用功能特點:1、安裝方便、使用簡單。老站、新站都能使用。2、…
👁 419
帝国cms7.5百度主动/批量推送插件

帝國cms7.5百度主動/批量推送插件 實用收藏 帝國插件

本插件支持帝國CMS7.5及7.2 UTF-8版本,安裝/卸載簡單方便 相信很多使用帝國CMS程序的新手站長們,一直都苦於不知道網站生成的文章如何向百度進行即時主動推送 如果不將網站更新的文章推送給百度的話,網站收錄會很慢,影響SEO優化,特別是對於一些採集的人來說,如果手動去提交的話,估計手都廢了…
👁 341
帝国工具箱 V1.0

帝國工具箱 V1.0 實用收藏 帝國插件

作爲一個經常玩帝國cms的站長來說,很多時候都會感覺到某些操作異常的麻煩! 比如說,我想修改一下帝國數據表前綴! 比如說,我採集的文章,我想批量修改縮略圖! 比如說,採集的文章裏,圖片失效了,我想重新隨機換一下圖片! 比如說,我想批量清除帝國數據庫裏面其他多餘的表! 比如說,帝國cms的後臺忘記了密…
👁 444
帝国CMS批量添加栏目插件

帝國CMS批量添加欄目插件 實用收藏 帝國插件

1、功能強大 可以自動生成拼音目錄;可快速統一設置父欄目;可識別自定義的父欄目。 2、使用簡單。 除了欄目名和目錄設置外,其它各項與系統自帶的設置方法相同,能快速上手使用。自定義欄目字段也可以批量設置。 ******************** 安裝教程 ******************** 覆…
👁 333
帝国CMS 多少数据分表好?已发布的数据如何进行分表操作?帝国cms百万数据如何平均分配到分表?

帝國CMS 多少數據分表好?已發佈的數據如何進行分表操作?帝國cms百萬數據如何平均分配到分表? 程序筆記 帝國cms 實用收藏 帝國插件

帝國CMS 多少數據分表好?1、數據庫50G,應新建主表;2、滿5W條數據新建副表,並將最新建的副表設爲當前存放表;【也有建議10W條數據分一次表的】數據量過大,已導致MYSQL數據對IO的操作讀寫量巨大,導致整個服務器負載過大。特別是帝國cms後臺操作緩慢,尤其是數據量大的欄目,本人的站點沒分表前…
👁 683

推薦閱讀

响应式光源光电照明研发网站模板 1023

響應式光源光電照明研發網站模板 1023 實用收藏 易優模板

此套eyoucms響應式模板適用於光源、光電照明與研發行業,設計風格科技節能,能夠展示照明產品、光電技術、研發成果及工程案例。有助於光電企業在線上展示技術實力,吸引客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CM…
👁 46
(自适应手机版)幽默笑话网站pbootcms模板 搞笑趣图类网站源码下载 0177

(自適應手機版)幽默笑話網站pbootcms模板 搞笑趣圖類網站源碼下載 0177 實用收藏 pbootcms模板

本套自適應手機版的幽默笑話與搞笑趣圖類PbootCMS網站模板。設計風格輕鬆活潑,能夠很好地聚合有趣的內容、圖片與段子。是搭建娛樂消遣類網站、吸引年輕流量用戶的理想選擇。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相關文章Pb…
👁 46
响应式手机配件设计网站模板 1024

響應式手機配件設計網站模板 1024 實用收藏 易優模板

一款針對手機配件設計行業的eyoucms響應式網站模板。設計風格科技時尚,能夠展示手機配件產品、設計風格、品牌形象及新品發佈。有助於手機配件品牌在線上吸引年輕消費羣體。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS…
👁 60
(PC+WAP)矿山设备网站模板 碎石机网站源码下载 1166

(PC+WAP)礦山設備網站模板 碎石機網站源碼下載 1166 實用收藏 pbootcms模板

一款礦山設備與碎石機PbootCMS網站模板,支持PC與WAP端。設計風格專業工業,適合展示礦山破碎設備、篩分機械及工程案例。有助於礦山機械企業在線上展示產品,吸引礦業與建築客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相…
👁 57
(自适应手机版)政府党史学习pbootcms网站模板 红色教育党建专题网站源码下载 0178

(自適應手機版)政府黨史學習pbootcms網站模板 紅色教育黨建專題網站源碼下載 0178 實用收藏 pbootcms模板

一款自適應手機版的政府黨史學習與紅色教育黨建專題PbootCMS網站模板。設計風格莊重紅色,符合黨建宣傳要求。能夠很好地展示黨史資料、學習活動及黨建成果,是基層黨組織或政府單位搭建專題學習平臺的優質選擇。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼…
👁 35