mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-03 14:10:57 +08:00
environment require disable mysql extension
This commit is contained in:
@@ -60,6 +60,7 @@ if [ "$SERVICE_NAME" = "php" ]; then
|
||||
# composer install
|
||||
if [ ! -d "$VENDOR_DIR" ]; then
|
||||
echo_info "vendor dir: $VENDOR_DIR not exists, run composer install ..."
|
||||
git config --global --add safe.directory ${ROOT_PATH}
|
||||
composer install --working-dir=${ROOT_PATH}
|
||||
else
|
||||
echo_success "vendor dir: $VENDOR_DIR already exists, skip run composer install ..."
|
||||
|
||||
@@ -118,11 +118,11 @@ class NexusUpdate extends Command
|
||||
return 0;
|
||||
}
|
||||
if (!$mysqlInfo['match']) {
|
||||
$this->doLog("Error: MySQL version: {$mysqlInfo['version']} is too low, please use the newest version of 5.7 or above.", 'error');
|
||||
$this->doLog("Error: MySQL version: {$mysqlInfo['version']} is too low, please use the newest version of {$mysqlInfo['minVersion']} or above.", 'error');
|
||||
return 0;
|
||||
}
|
||||
if (!$redisInfo['match']) {
|
||||
$this->doLog("Error: Redis version: {$mysqlInfo['version']} is too low, please use 2.0.0 or above.", 'error');
|
||||
$this->doLog("Error: Redis version: {$mysqlInfo['version']} is too low, please use {$mysqlInfo['minVersion']} or above.", 'error');
|
||||
return 0;
|
||||
}
|
||||
if ($includeComposer) {
|
||||
|
||||
@@ -56,8 +56,7 @@ class Test extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$rep = new SeedBoxRepository();
|
||||
$rep->updateCacheCronjob();
|
||||
Language::updateTransStatus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ class Kernel extends ConsoleKernel
|
||||
|
||||
private function registerScheduleCleanup(Schedule $schedule): void
|
||||
{
|
||||
if (!Schema::hasTable("settings")) {
|
||||
if (!file_exists(base_path(".env")) || !Schema::hasTable("settings")) {
|
||||
return;
|
||||
}
|
||||
$interval = get_setting("main.autoclean_interval_one");
|
||||
|
||||
@@ -38,72 +38,72 @@ class Language extends NexusModel
|
||||
'cs' => [
|
||||
'lang_name' => 'Czech',
|
||||
'lang_name_cn' => '捷克语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'da' => [
|
||||
'lang_name' => 'Danish',
|
||||
'lang_name_cn' => '丹麦语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'nl' => [
|
||||
'lang_name' => 'Dutch',
|
||||
'lang_name_cn' => '荷兰语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'fi' => [
|
||||
'lang_name' => 'Finnish',
|
||||
'lang_name_cn' => '芬兰语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'fr' => [
|
||||
'lang_name' => 'French',
|
||||
'lang_name_cn' => '法语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'de' => [
|
||||
'lang_name' => 'German',
|
||||
'lang_name_cn' => '德语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'el' => [
|
||||
'lang_name' => 'Greek',
|
||||
'lang_name_cn' => '希腊语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'nb' => [
|
||||
'lang_name' => 'Norwegian',
|
||||
'lang_name_cn' => '挪威语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'pl' => [
|
||||
'lang_name' => 'Polish',
|
||||
'lang_name_cn' => '波兰语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'pt' => [
|
||||
'lang_name' => 'Portuguese',
|
||||
'lang_name_cn' => '葡萄牙语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'ro' => [
|
||||
'lang_name' => 'Romanian',
|
||||
'lang_name_cn' => '罗马尼亚语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'ru' => [
|
||||
'lang_name' => 'Russian',
|
||||
'lang_name_cn' => '俄语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'es' => [
|
||||
'lang_name' => 'Spanish',
|
||||
'lang_name_cn' => '西班牙语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
'sv' => [
|
||||
'lang_name' => 'Swedish',
|
||||
'lang_name_cn' => '瑞典语',
|
||||
'trans_state' => self::TRANS_STATE_INCOMPLETE,
|
||||
'trans_state' => self::TRANS_STATE_NEED_NEW,
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class PluginStore extends Model
|
||||
'description' => 'array',
|
||||
];
|
||||
|
||||
const PLUGIN_LIST_API = "https://nppl.nexusphp.workers.dev";
|
||||
const PLUGIN_LIST_API = "https://nexusphp.org/plugin-store";
|
||||
const BLOG_POST_INFO_API = "https://nexusphp.org/wp-json/wp/v2/posts/%d";
|
||||
const BLOG_POST_URL = "https://nexusphp.org/?p=%d";
|
||||
|
||||
@@ -98,7 +98,7 @@ class PluginStore extends Model
|
||||
} else {
|
||||
$log .= ", not_null";
|
||||
}
|
||||
do_log($log, 'debug');
|
||||
do_log($log);
|
||||
return self::$rows;
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ class PluginStore extends Model
|
||||
$count = 0;
|
||||
foreach ($list as $row) {
|
||||
$installedVersion = $enabled[$row['plugin_id']] ?? '';
|
||||
if ($installedVersion && version_compare($installedVersion, $row['version'], '<=')) {
|
||||
if ($installedVersion && version_compare($installedVersion, $row['version'], '<')) {
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,9 +48,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'czechrep.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'cs',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
3 =>
|
||||
array (
|
||||
@@ -59,9 +59,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'denmark.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'da',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
4 =>
|
||||
array (
|
||||
@@ -70,9 +70,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'netherlands.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'nl',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
5 =>
|
||||
array (
|
||||
@@ -103,9 +103,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'finland.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'fi',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
8 =>
|
||||
array (
|
||||
@@ -114,9 +114,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'france.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'fr',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
9 =>
|
||||
array (
|
||||
@@ -125,9 +125,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'germany.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'de',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
10 =>
|
||||
array (
|
||||
@@ -136,9 +136,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'greece.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'el',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
11 =>
|
||||
array (
|
||||
@@ -180,9 +180,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'japan.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'ja',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
15 =>
|
||||
array (
|
||||
@@ -202,9 +202,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'norway.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'nb',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
17 =>
|
||||
array (
|
||||
@@ -224,9 +224,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'poland.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'pl',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
19 =>
|
||||
array (
|
||||
@@ -235,9 +235,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'portugal.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'pt',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
20 =>
|
||||
array (
|
||||
@@ -246,9 +246,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'romania.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'ro',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
21 =>
|
||||
array (
|
||||
@@ -257,9 +257,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'russia.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'ru',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
22 =>
|
||||
array (
|
||||
@@ -301,9 +301,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'spain.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'es',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
26 =>
|
||||
array (
|
||||
@@ -312,9 +312,9 @@ class LanguageTableSeeder extends Seeder
|
||||
'flagpic' => 'sweden.gif',
|
||||
'sub_lang' => 1,
|
||||
'rule_lang' => 0,
|
||||
'site_lang' => 0,
|
||||
'site_lang_folder' => '',
|
||||
'trans_state' => 'unavailable',
|
||||
'site_lang' => 1,
|
||||
'site_lang_folder' => 'sv',
|
||||
'trans_state' => 'need-new',
|
||||
),
|
||||
27 =>
|
||||
array (
|
||||
|
||||
@@ -37,6 +37,10 @@ class Install
|
||||
'mysqli', 'bcmath', 'redis', 'gd', 'gmp', 'Zend OPcache', 'pcntl', 'posix', 'sockets', 'zip', 'intl',
|
||||
'sqlite3', 'pdo_sqlite'
|
||||
];
|
||||
|
||||
protected array $conflictExtensions = [
|
||||
'mysql',
|
||||
];
|
||||
protected array $optionalExtensions = [
|
||||
// ['name' => 'swoole', 'desc' => "If use swoole for Octane, make sure 'current' shows 1"],
|
||||
];
|
||||
@@ -193,6 +197,16 @@ class Install
|
||||
'result' => $this->yesOrNo(empty($disabledFunctions)),
|
||||
];
|
||||
|
||||
foreach ($this->conflictExtensions as $extension) {
|
||||
$loaded = extension_loaded($extension);
|
||||
$tableRows[] = [
|
||||
'label' => "PHP extension $extension",
|
||||
'required' => 'disabled',
|
||||
'current' => (int)$loaded,
|
||||
'result' => $loaded ? 'NO' : 'YES',
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($this->requiredExtensions as $extension) {
|
||||
if ($extension == 'pcntl' && function_exists('exec')) {
|
||||
$output = [];
|
||||
@@ -707,8 +721,9 @@ class Install
|
||||
$sql = 'select version() as v';
|
||||
$result = NexusDB::select($sql);
|
||||
$version = $result[0]['v'];
|
||||
$match = version_compare($version, '5.7.8', '>=');
|
||||
return compact('version', 'match');
|
||||
$minVersion = '5.7.8';
|
||||
$match = version_compare($version, $minVersion, '>=');
|
||||
return compact('version', 'match', 'minVersion');
|
||||
}
|
||||
|
||||
public function getRedisVersionInfo(): array
|
||||
@@ -716,8 +731,9 @@ class Install
|
||||
$redis = NexusDB::redis();
|
||||
$result = $redis->info();
|
||||
$version = $result['redis_version'];
|
||||
$match = version_compare($version, '2.6.12', '>=');
|
||||
return compact('version', 'match');
|
||||
$minVersion = '2.6.12';
|
||||
$match = version_compare($version, $minVersion, '>=');
|
||||
return compact('version', 'match', 'minVersion');
|
||||
}
|
||||
|
||||
public function checkLock()
|
||||
|
||||
@@ -95,6 +95,7 @@ return array (
|
||||
'upload_deny_approval_deny_count' => 2,
|
||||
'enable_global_search' => 'yes',
|
||||
'tmp_invite_count' => 0,
|
||||
'complain_enabled' => 'yes',
|
||||
),
|
||||
'smtp' =>
|
||||
array (
|
||||
|
||||
22
public/styles/nexus.css
vendored
22
public/styles/nexus.css
vendored
@@ -74,3 +74,25 @@ img.hitandrun {
|
||||
.word-break-all {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.form-box {
|
||||
padding: 15px;
|
||||
}
|
||||
.form-control-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px 0;
|
||||
}
|
||||
.form-control-row .label {
|
||||
width: 80px
|
||||
}
|
||||
.form-control-row .field {
|
||||
|
||||
}
|
||||
.form-control-row input[type=text],textarea {
|
||||
width: 300px;
|
||||
padding: 4px;
|
||||
}
|
||||
.form-control-row input[type=checkbox] {
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
@@ -1033,30 +1033,6 @@ if (get_setting('seed_box.enabled') == 'yes') {
|
||||
}
|
||||
$seedBox .= sprintf('<div><input type="button" id="add-seed-box-btn" value="%s"/></div>', $lang_usercp['add_seed_box_btn']);
|
||||
tr_small($lang_usercp['row_seed_box'], $seedBox, 1);
|
||||
$seedBoxCss = <<<CSS
|
||||
.form-box {
|
||||
padding: 15px;
|
||||
}
|
||||
.form-control-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px 0;
|
||||
}
|
||||
.form-control-row .label {
|
||||
width: 80px
|
||||
}
|
||||
.form-control-row .field {
|
||||
|
||||
}
|
||||
.form-control-row input[type=text],textarea {
|
||||
width: 300px;
|
||||
padding: 4px;
|
||||
}
|
||||
.form-control-row input[type=checkbox] {
|
||||
vertical-align: sub;
|
||||
}
|
||||
CSS;
|
||||
|
||||
$seedBoxForm = <<<FORM
|
||||
<div class="form-box">
|
||||
<form id="seed-box-form">
|
||||
@@ -1117,7 +1093,6 @@ jQuery('#seed-box-table').on('click', '.remove-seed-box-btn', function () {
|
||||
});
|
||||
JS;
|
||||
\Nexus\Nexus::js($seedBoxJs, 'footer', false);
|
||||
\Nexus\Nexus::css($seedBoxCss, 'footer', false);
|
||||
}
|
||||
//end seed box
|
||||
|
||||
|
||||
Reference in New Issue
Block a user