Issues (2366)

Branch: master

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

eccube_install.php (51 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
if (php_sapi_name() !== 'cli') {
4
    exit(1);
5
}
6
7
set_time_limit(0);
8
ini_set('display_errors', 1);
9
10
define('COMPOSER_FILE', 'composer.phar');
11
define('COMPOSER_SETUP_FILE', 'composer-setup.php');
12
13
setUseAnsi($argv);
14
15
$argv = is_array($argv) ? $argv : array();
16
17
$argv[1] = isset($argv[1]) ? $argv[1] : null;
18
$argv[2] = isset($argv[2]) ? $argv[2] : null;
19
20
if (in_array('--help', $argv) || empty($argv[1])) {
21
    displayHelp($argv);
22
    exit(0);
23
}
24
25
if (in_array('-v', $argv) || in_array('--version', $argv)) {
26
    require __DIR__.'/src/Eccube/Common/Constant.php';
27
    echo 'EC-CUBE '.Eccube\Common\Constant::VERSION.PHP_EOL;
28
    exit(0);
29
}
30
31
out('EC-CUBE3 installer use database driver of ', null, false);
32
33
$database_driver = 'pdo_sqlite';
34
switch($argv[1]) {
35
    case 'mysql':
36
        $database_driver = 'pdo_mysql';
37
        break;
38
    case 'pgsql':
39
        $database_driver = 'pdo_pgsql';
40
        break;
41
    default:
42
    case 'sqlite':
43
    case 'sqlite3':
44
    case 'sqlite3-in-memory':
45
        $database_driver = 'pdo_sqlite';
46
}
47
out($database_driver);
48
49
initializeDefaultVariables($database_driver);
50
51
if (in_array('-V', $argv) || in_array('--verbose', $argv)) {
52
    displayEnvironmentVariables();
53
}
54
55
$database = getDatabaseConfig($database_driver);
56
$connectionParams = $database['database'];
57
58
if ($argv[2] != 'none') {
59
    composerSetup();
60
    composerInstall();
61
}
62
63
require __DIR__.'/autoload.php';
64
65
out('update permissions...');
66
updatePermissions($argv);
67
68
createConfigFiles($database_driver);
69
70
if (!in_array('--skip-createdb', $argv)) {
71
    createDatabase($connectionParams);
72
}
73
74
if (!in_array('--skip-initdb', $argv)) {
75
    $app = createApplication();
76
    initializeDatabase($app);
77
}
78
79
out('EC-CUBE3 install finished successfully!', 'success');
80
$root_urlpath = getenv('ROOT_URLPATH');
81
if (PHP_VERSION_ID >= 50400 && empty($root_urlpath)) {
82
    out('PHP built-in web server to run applications, `php -S localhost:8080 -t html`', 'info');
83
    out('Open your browser and access the http://localhost:8080/', 'info');
84
}
85
exit(0);
86
87
function displayHelp($argv)
0 ignored issues
show
Consider putting global function "displayHelp" in a static class
Loading history...
Missing function doc comment
Loading history...
88
{
89
    echo <<<EOF
90
EC-CUBE3 Installer
91
------------------
92
Usage:
93
${argv[0]} [mysql|pgsql|sqlite3] [none] [options]
94
95
Arguments[1]:
96
Specify database types
97
98
Arguments[2]:
99
Specifying the "none" to skip the installation of Composer
100
101
Options:
102
-v, --version        print ec-cube version
103
-V, --verbose        enable verbose output
104
--skip-createdb      skip to create database
105
--skip-initdb        skip to initialize database
106
--help               this help
107
--ansi               force ANSI color output
108
--no-ansi            disable ANSI color output
109
110
Environment variables:
111
112
EOF;
113
    foreach (getExampleVariables() as $name => $value) {
114
        echo $name.'='.$value.PHP_EOL;
115
    }
116
}
117
118
function initializeDefaultVariables($database_driver)
0 ignored issues
show
Consider putting global function "initializeDefaultVariables" in a static class
Loading history...
Missing function doc comment
Loading history...
119
{
120
    $database_url = getenv('DATABASE_URL');
121
    if ($database_url) {
122
        $url = parse_url($database_url);
123
        putenv('DBSERVER='.$url['host']);
124
        putenv('DBNAME='.substr($url['path'], 1));
125
        putenv('DBUSER='.$url['user']);
126
        putenv('DBPORT='.$url['port']);
127
        putenv('DBPASS='.$url['pass']);
128
    }
129
    switch ($database_driver) {
130
        case 'pdo_pgsql':
131
            putenv('ROOTUSER='.(getenv('ROOTUSER') ? getenv('ROOTUSER') : (getenv('DBUSER') ? getenv('DBUSER') : 'postgres')));
132
            putenv('ROOTPASS='.(getenv('ROOTPASS') ? getenv('ROOTPASS') : (getenv('DBPASS') ? getenv('DBPASS') : 'password')));
133
            putenv('DBSERVER='.(getenv('DBSERVER') ? getenv('DBSERVER') : 'localhost'));
134
            putenv('DBNAME='.(getenv('DBNAME') ? getenv('DBNAME') : 'cube3_dev'));
135
            putenv('DBUSER='.(getenv('DBUSER') ? getenv('DBUSER') : 'cube3_dev_user'));
136
            putenv('DBPORT='.(getenv('DBPORT') ? getenv('DBPORT') : '5432'));
137
            putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
138
            break;
139
        case 'pdo_mysql':
140
            putenv('ROOTUSER='.(getenv('ROOTUSER') ? getenv('ROOTUSER') : (getenv('DBUSER') ? getenv('DBUSER') : 'root')));
141
            putenv('DBSERVER='.(getenv('DBSERVER') ? getenv('DBSERVER') : 'localhost'));
142
            putenv('DBNAME='.(getenv('DBNAME') ? getenv('DBNAME') : 'cube3_dev'));
143
            putenv('DBUSER='.(getenv('DBUSER') ? getenv('DBUSER') : 'cube3_dev_user'));
144
            putenv('DBPORT='.(getenv('DBPORT') ? getenv('DBPORT') : '3306'));
145
            putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
146
            if (getenv('TRAVIS')) {
147
                putenv('DBPASS=');
148
                putenv('ROOTPASS=');
149
            } else {
150
                putenv('DBPASS='.(getenv('DBPASS') ? getenv('DBPASS') : 'password'));
151
                putenv('ROOTPASS='.(getenv('ROOTPASS') ? getenv('ROOTPASS') : (getenv('DBPASS') ? getenv('DBPASS') : 'password')));
152
            }
153
            break;
154
        default:
155
        case 'pdo_sqlite':
156
            break;
157
    }
158
    putenv('SHOP_NAME='.(getenv('SHOP_NAME') ? getenv('SHOP_NAME') : 'EC-CUBE SHOP'));
159
    putenv('ADMIN_MAIL='.(getenv('ADMIN_MAIL') ? getenv('ADMIN_MAIL') : '[email protected]'));
160
    putenv('ADMIN_USER='.(getenv('ADMIN_USER') ? getenv('ADMIN_USER') : 'admin'));
161
    putenv('ADMIN_PASS='.(getenv('ADMIN_PASS') ? getenv('ADMIN_PASS') : 'password'));
162
    putenv('MAIL_BACKEND='.(getenv('MAIL_BACKEND') ? getenv('MAIL_BACKEND') : 'smtp'));
163
    putenv('MAIL_HOST='.(getenv('MAIL_HOST') ? getenv('MAIL_HOST') : 'localhost'));
164
    putenv('MAIL_PORT='.(getenv('MAIL_PORT') ? getenv('MAIL_PORT') : 25));
165
    putenv('MAIL_USER='.(getenv('MAIL_USER') ? getenv('MAIL_USER') : null));
166
    putenv('MAIL_PASS='.(getenv('MAIL_PASS') ? getenv('MAIL_PASS') : null));
167
    putenv('ADMIN_ROUTE='.(getenv('ADMIN_ROUTE') ? getenv('ADMIN_ROUTE') : 'admin'));
168
    putenv('ROOT_URLPATH='.(getenv('ROOT_URLPATH') ? getenv('ROOT_URLPATH') : null));
169
    putenv('AUTH_MAGIC='.(getenv('AUTH_MAGIC') ? getenv('AUTH_MAGIC') :
170
                          substr(str_replace(array('/', '+', '='), '', base64_encode(openssl_random_pseudo_bytes(32 * 2))), 0, 32)));
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 4 spaces, but found 26.
Loading history...
171
}
172
173
function getExampleVariables()
0 ignored issues
show
Consider putting global function "getExampleVariables" in a static class
Loading history...
Missing function doc comment
Loading history...
174
{
175
    return array(
0 ignored issues
show
Add a comma after each item in a multi-line array
Loading history...
176
        'ADMIN_USER' => 'admin',
177
        'ADMIN_MAIL' => '[email protected]',
178
        'SHOP_NAME' => 'EC-CUBE SHOP',
179
        'ADMIN_ROUTE' => 'admin',
180
        'ROOT_URLPATH' => '<ec-cube install path>',
181
        'DBSERVER' => '127.0.0.1',
182
        'DBNAME' => 'cube3_dev',
183
        'DBUSER' => 'cube3_dev_user',
184
        'DBPASS' => 'password',
185
        'DBPORT' => '<database port>',
186
        'ROOTUSER' => 'root|postgres',
187
        'ROOTPASS' => 'password',
188
        'MAIL_BACKEND' => 'smtp',
189
        'MAIL_HOST' => 'localhost',
190
        'MAIL_PORT' => '25',
191
        'MAIL_USER' => '<SMTP AUTH user>',
192
        'MAIL_PASS' => '<SMTP AUTH password>',
193
        'AUTH_MAGIC' => '<auth_magic>'
194
    );
195
}
196
197
198
function displayEnvironmentVariables()
0 ignored issues
show
Consider putting global function "displayEnvironmentVariables" in a static class
Loading history...
Missing function doc comment
Loading history...
199
{
200
    echo 'Environment variables:'.PHP_EOL;
201
    foreach (array_keys(getExampleVariables()) as $name) {
202
        echo $name.'='.getenv($name).PHP_EOL;
203
    }
204
}
205
206
function composerSetup()
0 ignored issues
show
Consider putting global function "composerSetup" in a static class
Loading history...
Missing function doc comment
Loading history...
207
{
208
    if (!file_exists(__DIR__.'/'.COMPOSER_FILE)) {
209
        if (!file_exists(__DIR__.'/'.COMPOSER_SETUP_FILE)) {
210
            copy('https://getcomposer.org/installer', COMPOSER_SETUP_FILE);
211
        }
212
213
        $sha = hash_file('SHA384', COMPOSER_SETUP_FILE).PHP_EOL;
214
        out(COMPOSER_SETUP_FILE.': '.$sha);
215
216
        $command = 'php '.COMPOSER_SETUP_FILE;
217
        out("execute: $command", 'info');
218
        passthru($command);
219
        unlink(COMPOSER_SETUP_FILE);
220
    } else {
221
        $command = 'php '.COMPOSER_FILE.' self-update';
222
        passthru($command);
223
    }
224
}
225
226
function composerInstall()
0 ignored issues
show
Consider putting global function "composerInstall" in a static class
Loading history...
Missing function doc comment
Loading history...
227
{
228
    $command = 'php '.COMPOSER_FILE.' install --dev --no-interaction';
229
    passthru($command);
230
}
231
232
function createDatabase(array $connectionParams)
0 ignored issues
show
Consider putting global function "createDatabase" in a static class
Loading history...
Missing function doc comment
Loading history...
233
{
234
    $dbname = $connectionParams['dbname'];
235
    switch ($connectionParams['driver']) {
236 View Code Duplication
        case 'pdo_pgsql':
237
            $connectionParams['dbname'] = 'postgres';
238
            $connectionParams['user'] = getenv('ROOTUSER');
239
            $connectionParams['password'] = getenv('ROOTPASS');
240
            break;
241 View Code Duplication
        case 'pdo_mysql':
242
            $connectionParams['dbname'] = 'mysql';
243
            $connectionParams['user'] = getenv('ROOTUSER');
244
            $connectionParams['password'] = getenv('ROOTPASS');
245
            break;
246
        default:
247
        case 'pdo_sqlite':
248
            $connectionParams['dbname'] = '';
249
            if (file_exists($dbname)) {
250
                out('remove database to '.$dbname, 'info');
251
                unlink($dbname);
252
            }
253
            break;
254
    }
255
256
    $config = new \Doctrine\DBAL\Configuration();
257
    $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
258
    $sm = $conn->getSchemaManager();
259
    out('Created database connection...', 'info');
260
261
    if ($connectionParams['driver'] != 'pdo_sqlite') {
262
        $databases = $sm->listDatabases();
263
        if (in_array($dbname, $databases)) {
264
            out('database exists '.$dbname, 'info');
265
            out('drop database to '.$dbname, 'info');
266
            $sm->dropDatabase($dbname);
267
        }
268
    }
269
    out('create database to '.$dbname, 'info');
270
    $sm->createDatabase($dbname);
271
}
272
273
/**
274
 * @return \Eccube\Application
275
 */
276
function createApplication()
0 ignored issues
show
Consider putting global function "createApplication" in a static class
Loading history...
277
{
278
    $app = \Eccube\Application::getInstance();
279
    $app['debug'] = true;
280
    $app->initDoctrine();
281
    $app->initSecurity();
282
    $app->register(new \Silex\Provider\FormServiceProvider());
283
    $app->register(new \Eccube\ServiceProvider\EccubeServiceProvider());
284
    $app->boot();
285
    return $app;
0 ignored issues
show
Missing blank line before return statement
Loading history...
286
}
287
288
function initializeDatabase(\Eccube\Application $app)
0 ignored issues
show
Consider putting global function "initializeDatabase" in a static class
Loading history...
Missing function doc comment
Loading history...
289
{
290
    // Get an instance of your entity manager
291
    $entityManager = $app['orm.em'];
292
293
    $pdo = $entityManager->getConnection()->getWrappedConnection();
294
295
    // Clear Doctrine to be safe
296
    $entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
297
    $entityManager->clear();
298
    gc_collect_cycles();
299
300
    // Schema Tool to process our entities
301
    $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager);
302
    $classes = $entityManager->getMetaDataFactory()->getAllMetaData();
303
304
    // Drop all classes and re-build them for each test case
305
    out('Dropping database schema...', 'info');
306
    $tool->dropSchema($classes);
307
    out('Creating database schema...', 'info');
308
    $tool->createSchema($classes);
309
    out('Database schema created successfully!', 'success');
310
    $config = new \Doctrine\DBAL\Migrations\Configuration\Configuration($app['db']);
311
    $config->setMigrationsNamespace('DoctrineMigrations');
312
313
    $migrationDir = __DIR__.'/src/Eccube/Resource/doctrine/migration';
314
    $config->setMigrationsDirectory($migrationDir);
315
    $config->registerMigrationsFromDirectory($migrationDir);
316
317
    $migration = new \Doctrine\DBAL\Migrations\Migration($config);
318
    $migration->migrate();
319
    out('Database migration successfully!', 'success');
320
321
    $login_id = getenv('ADMIN_USER');
322
    $login_password = getenv('ADMIN_PASS');
323
    $passwordEncoder = new \Eccube\Security\Core\Encoder\PasswordEncoder($app['config']);
324
    $salt = \Eccube\Util\Str::random(32);
325
    $encodedPassword = $passwordEncoder->encodePassword($login_password, $salt);
326
327
    out('Creating admin accounts...', 'info');
328
    $sql = "INSERT INTO dtb_member (member_id, login_id, password, salt, work, del_flg, authority, creator_id, rank, update_date, create_date,name,department) VALUES (2, :login_id, :admin_pass , :salt , '1', '0', '0', '1', '1', current_timestamp, current_timestamp,'管理者', 'EC-CUBE SHOP');";
329
    $stmt = $pdo->prepare($sql);
330
    $stmt->execute(
331
        array(
0 ignored issues
show
Add a comma after each item in a multi-line array
Loading history...
332
            ':login_id' => $login_id,
333
            ':admin_pass' => $encodedPassword,
334
            ':salt' => $salt
335
        )
336
    );
337
    $stmt->closeCursor();
338
339
    $shop_name = getenv('SHOP_NAME');
340
    $admin_mail = getenv('ADMIN_MAIL');
341
    $sql = "INSERT INTO dtb_base_info (id, shop_name, email01, email02, email03, email04, update_date, option_product_tax_rule) VALUES (1, :shop_name, :admin_mail1, :admin_mail2, :admin_mail3, :admin_mail4, current_timestamp, 0)";
342
    $stmt = $pdo->prepare($sql);
343
    $stmt->execute(
344
        array(
345
            ':shop_name' => $shop_name,
346
            ':admin_mail1' => $admin_mail,
347
            ':admin_mail2' => $admin_mail,
348
            ':admin_mail3' => $admin_mail,
349
            ':admin_mail4' => $admin_mail,
350
        )
351
    );
352
    $stmt->closeCursor();
353
}
354
355
function updatePermissions($argv)
0 ignored issues
show
Consider putting global function "updatePermissions" in a static class
Loading history...
Missing function doc comment
Loading history...
356
{
357
    $finder = \Symfony\Component\Finder\Finder::create();
358
    $finder
359
        ->in('html')->notName('.htaccess')
360
        ->in('app')->notName('console');
361
362
    $verbose = false;
363
    if (in_array('-V', $argv) || in_array('--verbose', $argv)) {
364
        $verbose = true;
365
    }
366
    foreach ($finder as $content) {
367
        $permission = $content->getPerms();
368
        // see also http://www.php.net/fileperms
369
        if (!($permission & 0x0010) || !($permission & 0x0002)) {
370
            $realPath = $content->getRealPath();
371
            if ($verbose) {
372
                out(sprintf('%s %s to ', $realPath, substr(sprintf('%o', $permission), -4)), 'info', false);
373
            }
374
            $permission = !($permission & 0x0020) ? $permission += 040 : $permission; // g+r
375
            $permission = !($permission & 0x0010) ? $permission += 020 : $permission; // g+w
376
            $permission = !($permission & 0x0004) ? $permission += 04 : $permission;  // o+r
377
            $permission = !($permission & 0x0002) ? $permission += 02 : $permission;  // o+w
378
            $result = chmod($realPath, $permission);
379
            if ($verbose) {
380
                if ($result) {
381
                    out(substr(sprintf('%o', $permission), -4), 'info');
382
                } else {
383
                    out('failure', 'error');
384
                }
385
            }
386
        }
387
    }
388
}
389
390
function createConfigFiles($database_driver)
0 ignored issues
show
Consider putting global function "createConfigFiles" in a static class
Loading history...
Missing function doc comment
Loading history...
391
{
392
    $config_path = __DIR__.'/app/config/eccube';
393
    createYaml(getConfig(), $config_path.'/config.yml');
394
    createYaml(getDatabaseConfig($database_driver), $config_path.'/database.yml');
395
    createYaml(getMailConfig(), $config_path.'/mail.yml');
396
    createYaml(getPathConfig(), $config_path.'/path.yml');
397
}
398
399
function createYaml($config, $path)
0 ignored issues
show
Consider putting global function "createYaml" in a static class
Loading history...
Missing function doc comment
Loading history...
400
{
401
    $content = \Symfony\Component\Yaml\Yaml::dump($config);
402
    $fs = new \Symfony\Component\Filesystem\Filesystem();
403
    $fs->dumpFile($path, $content);
404
}
405
406
function getConfig()
0 ignored issues
show
Consider putting global function "getConfig" in a static class
Loading history...
Missing function doc comment
Loading history...
407
{
408
    $config = array (
409
        'auth_magic' => getenv('AUTH_MAGIC'),
410
        'password_hash_algos' => 'sha256',
411
        'shop_name' => getenv('SHOP_NAME'),
412
        'force_ssl' => NULL,
0 ignored issues
show
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
413
        'admin_allow_host' =>
414
        array (
0 ignored issues
show
Add a comma after each item in a multi-line array
Loading history...
415
        ),
416
        'cookie_lifetime' => 0,
417
        'locale' => 'ja',
418
        'timezone' => 'Asia/Tokyo',
419
        'eccube_install' => 1,
420
    );
421
    return $config;
0 ignored issues
show
Missing blank line before return statement
Loading history...
422
}
423
424
function getDatabaseConfig($database_driver)
0 ignored issues
show
Consider putting global function "getDatabaseConfig" in a static class
Loading history...
Missing function doc comment
Loading history...
425
{
426
    $database = array (
0 ignored issues
show
Add a comma after each item in a multi-line array
Loading history...
427
        'database' =>
428
        array (
429
            'driver' => $database_driver,
430
        )
431
    );
432
433
    switch ($database_driver) {
434
        case 'pdo_sqlite':
435
            $database['database']['dbname'] = $database['database']['path'] = __DIR__.'/app/config/eccube/eccube.db';
436
437
            break;
438
        case 'pdo_pgsql':
439
        case 'pdo_mysql':
440
            $database['database']['host'] = getenv('DBSERVER');
441
            $database['database']['dbname'] = getenv('DBNAME');
442
            $database['database']['user'] = getenv('DBUSER');
443
            $database['database']['port'] = getenv('DBPORT');
444
            $database['database']['password'] = getenv('DBPASS');
445
            $database['database']['port'] = getenv('DBPORT');
446
            break;
447
    }
448
    $database['database']['charset'] = 'utf8';
449
    $database['database']['defaultTableOptions'] = array('collate' => 'utf8_general_ci');
450
    return $database;
0 ignored issues
show
Missing blank line before return statement
Loading history...
451
}
452
453
function getMailConfig()
0 ignored issues
show
Consider putting global function "getMailConfig" in a static class
Loading history...
Missing function doc comment
Loading history...
454
{
455
    $mail = array (
456
        'mail' =>
457
        array (
458
            'transport' => getenv('MAIL_BACKEND'),
459
            'host' => getenv('MAIL_HOST'),
460
            'port' => getenv('MAIL_PORT'),
461
            'username' => getenv('MAIL_USER'),
462
            'password' => getenv('MAIL_PASS'),
463
            'encryption' => NULL,
0 ignored issues
show
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
464
            'auth_mode' => NULL,
0 ignored issues
show
TRUE, FALSE and NULL must be lowercase; expected null, but found NULL.
Loading history...
465
            'charset_iso_2022_jp' => false,
466
            'use_spool' => true,
467
        ),
468
    );
469
    return $mail;
0 ignored issues
show
Missing blank line before return statement
Loading history...
470
}
471
472
/**
473
 * @see \Eccube\Controller\Install\InstallController::createPathYamlFile()
474
 */
0 ignored issues
show
Missing @return tag in function comment
Loading history...
475
function getPathConfig()
0 ignored issues
show
Consider putting global function "getPathConfig" in a static class
Loading history...
476
{
477
    $ADMIN_ROUTE = getenv('ADMIN_ROUTE');
478
    $TEMPLATE_CODE = 'default';
479
    $USER_DATA_ROUTE = 'user_data';
480
    $ROOT_DIR = realpath(__DIR__);
481
    $ROOT_URLPATH = getenv('ROOT_URLPATH');
482
    $ROOT_PUBLIC_URLPATH = $ROOT_URLPATH.RELATIVE_PUBLIC_DIR_PATH;
483
484
    $target = array('${ADMIN_ROUTE}', '${TEMPLATE_CODE}', '${USER_DATA_ROUTE}', '${ROOT_DIR}', '${ROOT_URLPATH}', '${ROOT_PUBLIC_URLPATH}');
485
    $replace = array($ADMIN_ROUTE, $TEMPLATE_CODE, $USER_DATA_ROUTE, $ROOT_DIR, $ROOT_URLPATH, $ROOT_PUBLIC_URLPATH);
486
    $content = str_replace(
487
        $target,
488
        $replace,
489
        file_get_contents(__DIR__.'/src/Eccube/Resource/config/path.yml.dist')
490
    );
491
    return \Symfony\Component\Yaml\Yaml::parse($content);
0 ignored issues
show
Missing blank line before return statement
Loading history...
492
}
493
494
/**
0 ignored issues
show
Doc comment for parameter "$argv" missing
Loading history...
495
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
496
 */
497
function setUseAnsi($argv)
0 ignored issues
show
Consider putting global function "setUseAnsi" in a static class
Loading history...
498
{
499
    // --no-ansi wins over --ansi
500
    if (in_array('--no-ansi', $argv)) {
501
        define('USE_ANSI', false);
502
    } elseif (in_array('--ansi', $argv)) {
503
        define('USE_ANSI', true);
504
    } else {
505
        // On Windows, default to no ANSI, except in ANSICON and ConEmu.
506
        // Everywhere else, default to ANSI if stdout is a terminal.
507
        define(
508
            'USE_ANSI',
509
            (DIRECTORY_SEPARATOR == '\\')
510
                ? (false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'))
511
                : (function_exists('posix_isatty') && posix_isatty(1))
512
        );
513
    }
514
}
515
516
/**
0 ignored issues
show
Doc comment for parameter "$text" missing
Loading history...
Doc comment for parameter "$color" missing
Loading history...
Doc comment for parameter "$newLine" missing
Loading history...
517
 * @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php
518
 */
519
function out($text, $color = null, $newLine = true)
0 ignored issues
show
Consider putting global function "out" in a static class
Loading history...
520
{
521
    $styles = array(
0 ignored issues
show
Add a comma after each item in a multi-line array
Loading history...
522
        'success' => "\033[0;32m%s\033[0m",
523
        'error' => "\033[31;31m%s\033[0m",
524
        'info' => "\033[33;33m%s\033[0m"
525
    );
526
    $format = '%s';
527
    if (isset($styles[$color]) && USE_ANSI) {
528
        $format = $styles[$color];
529
    }
530
    if ($newLine) {
531
        $format .= PHP_EOL;
532
    }
533
    printf($format, $text);
534
}
535