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) |
|
|
|
|
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) |
|
|
|
|
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))); |
|
|
|
|
171
|
|
|
} |
172
|
|
|
|
173
|
|
|
function getExampleVariables() |
|
|
|
|
174
|
|
|
{ |
175
|
|
|
return array( |
|
|
|
|
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() |
|
|
|
|
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() |
|
|
|
|
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() |
|
|
|
|
227
|
|
|
{ |
228
|
|
|
$command = 'php '.COMPOSER_FILE.' install --dev --no-interaction'; |
229
|
|
|
passthru($command); |
230
|
|
|
} |
231
|
|
|
|
232
|
|
|
function createDatabase(array $connectionParams) |
|
|
|
|
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() |
|
|
|
|
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; |
|
|
|
|
286
|
|
|
} |
287
|
|
|
|
288
|
|
|
function initializeDatabase(\Eccube\Application $app) |
|
|
|
|
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( |
|
|
|
|
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) |
|
|
|
|
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) |
|
|
|
|
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) |
|
|
|
|
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() |
|
|
|
|
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, |
|
|
|
|
413
|
|
|
'admin_allow_host' => |
414
|
|
|
array ( |
|
|
|
|
415
|
|
|
), |
416
|
|
|
'cookie_lifetime' => 0, |
417
|
|
|
'locale' => 'ja', |
418
|
|
|
'timezone' => 'Asia/Tokyo', |
419
|
|
|
'eccube_install' => 1, |
420
|
|
|
); |
421
|
|
|
return $config; |
|
|
|
|
422
|
|
|
} |
423
|
|
|
|
424
|
|
|
function getDatabaseConfig($database_driver) |
|
|
|
|
425
|
|
|
{ |
426
|
|
|
$database = array ( |
|
|
|
|
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; |
|
|
|
|
451
|
|
|
} |
452
|
|
|
|
453
|
|
|
function getMailConfig() |
|
|
|
|
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, |
|
|
|
|
464
|
|
|
'auth_mode' => NULL, |
|
|
|
|
465
|
|
|
'charset_iso_2022_jp' => false, |
466
|
|
|
'use_spool' => true, |
467
|
|
|
), |
468
|
|
|
); |
469
|
|
|
return $mail; |
|
|
|
|
470
|
|
|
} |
471
|
|
|
|
472
|
|
|
/** |
473
|
|
|
* @see \Eccube\Controller\Install\InstallController::createPathYamlFile() |
474
|
|
|
*/ |
|
|
|
|
475
|
|
|
function getPathConfig() |
|
|
|
|
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); |
|
|
|
|
492
|
|
|
} |
493
|
|
|
|
494
|
|
|
/** |
|
|
|
|
495
|
|
|
* @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php |
496
|
|
|
*/ |
497
|
|
|
function setUseAnsi($argv) |
|
|
|
|
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
|
|
|
/** |
|
|
|
|
517
|
|
|
* @link https://github.com/composer/windows-setup/blob/master/src/php/installer.php |
518
|
|
|
*/ |
519
|
|
|
function out($text, $color = null, $newLine = true) |
|
|
|
|
520
|
|
|
{ |
521
|
|
|
$styles = array( |
|
|
|
|
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
|
|
|
|