| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-24 00:26:39 +08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Database configuration options. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Changes to these config files are not supported by BookStack and may break upon updates. | 
					
						
							|  |  |  |  * Configuration should be altered via the `.env` file or environment variables. | 
					
						
							|  |  |  |  * Do not edit this file unless you're happy to maintain any changes yourself. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-09 06:42:48 +08:00
										 |  |  | // REDIS
 | 
					
						
							|  |  |  | // Split out configuration into an array
 | 
					
						
							| 
									
										
										
										
											2016-04-03 18:00:14 +08:00
										 |  |  | if (env('REDIS_SERVERS', false)) { | 
					
						
							| 
									
										
										
										
											2019-03-09 06:42:48 +08:00
										 |  |  |     $redisDefaults = ['host' => '127.0.0.1', 'port' => '6379', 'database' => '0', 'password' => null]; | 
					
						
							| 
									
										
										
										
											2016-04-03 18:00:14 +08:00
										 |  |  |     $redisServers = explode(',', trim(env('REDIS_SERVERS', '127.0.0.1:6379:0'), ',')); | 
					
						
							| 
									
										
										
										
											2019-09-07 06:36:16 +08:00
										 |  |  |     $redisConfig = ['client' => 'predis']; | 
					
						
							| 
									
										
										
										
											2019-03-09 06:42:48 +08:00
										 |  |  |     $cluster = count($redisServers) > 1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if ($cluster) { | 
					
						
							|  |  |  |         $redisConfig['clusters'] = ['default' => []]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-03 18:00:14 +08:00
										 |  |  |     foreach ($redisServers as $index => $redisServer) { | 
					
						
							|  |  |  |         $redisServerDetails = explode(':', $redisServer); | 
					
						
							| 
									
										
										
										
											2019-03-09 06:42:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $serverConfig = []; | 
					
						
							|  |  |  |         $configIndex = 0; | 
					
						
							|  |  |  |         foreach ($redisDefaults as $configKey => $configDefault) { | 
					
						
							|  |  |  |             $serverConfig[$configKey] = ($redisServerDetails[$configIndex] ?? $configDefault); | 
					
						
							|  |  |  |             $configIndex++; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($cluster) { | 
					
						
							|  |  |  |             $redisConfig['clusters']['default'][] = $serverConfig; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $redisConfig['default'] = $serverConfig; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-04-03 18:00:14 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-09 06:42:48 +08:00
										 |  |  | // MYSQL
 | 
					
						
							|  |  |  | // Split out port from host if set
 | 
					
						
							| 
									
										
										
										
											2017-07-03 00:20:05 +08:00
										 |  |  | $mysql_host = env('DB_HOST', 'localhost'); | 
					
						
							|  |  |  | $mysql_host_exploded = explode(':', $mysql_host); | 
					
						
							|  |  |  | $mysql_port = env('DB_PORT', 3306); | 
					
						
							| 
									
										
										
										
											2017-07-03 00:34:32 +08:00
										 |  |  | if (count($mysql_host_exploded) > 1) { | 
					
						
							| 
									
										
										
										
											2017-07-03 00:20:05 +08:00
										 |  |  |     $mysql_host = $mysql_host_exploded[0]; | 
					
						
							|  |  |  |     $mysql_port = intval($mysql_host_exploded[1]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | return [ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-24 00:26:39 +08:00
										 |  |  |     // Default database connection name.
 | 
					
						
							|  |  |  |     // Options: mysql, mysql_testing
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     'default' => env('DB_CONNECTION', 'mysql'), | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-24 00:26:39 +08:00
										 |  |  |     // Available database connections
 | 
					
						
							|  |  |  |     // Many of those shown here are unsupported by BookStack.
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     'connections' => [ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         'mysql' => [ | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'driver'         => 'mysql', | 
					
						
							|  |  |  |             'url'            => env('DATABASE_URL'), | 
					
						
							|  |  |  |             'host'           => $mysql_host, | 
					
						
							|  |  |  |             'database'       => env('DB_DATABASE', 'forge'), | 
					
						
							|  |  |  |             'username'       => env('DB_USERNAME', 'forge'), | 
					
						
							|  |  |  |             'password'       => env('DB_PASSWORD', ''), | 
					
						
							|  |  |  |             'unix_socket'    => env('DB_SOCKET', ''), | 
					
						
							|  |  |  |             'port'           => $mysql_port, | 
					
						
							|  |  |  |             'charset'        => 'utf8mb4', | 
					
						
							|  |  |  |             'collation'      => 'utf8mb4_unicode_ci', | 
					
						
							| 
									
										
										
										
											2021-09-30 01:41:11 +08:00
										 |  |  |             // Prefixes are only semi-supported and may be unstable
 | 
					
						
							|  |  |  |             // since they are not tested as part of our automated test suite.
 | 
					
						
							|  |  |  |             // If used, the prefix should not be changed otherwise you will likely receive errors.
 | 
					
						
							| 
									
										
										
										
											2021-09-19 20:31:18 +08:00
										 |  |  |             'prefix'         => env('DB_TABLE_PREFIX', ''), | 
					
						
							| 
									
										
										
										
											2019-09-07 06:36:16 +08:00
										 |  |  |             'prefix_indexes' => true, | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'strict'         => false, | 
					
						
							|  |  |  |             'engine'         => null, | 
					
						
							|  |  |  |             'options'        => extension_loaded('pdo_mysql') ? array_filter([ | 
					
						
							| 
									
										
										
										
											2019-09-14 06:58:40 +08:00
										 |  |  |                 PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), | 
					
						
							|  |  |  |             ]) : [], | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-03 01:26:33 +08:00
										 |  |  |         'mysql_testing' => [ | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'driver'         => 'mysql', | 
					
						
							|  |  |  |             'url'            => env('TEST_DATABASE_URL'), | 
					
						
							|  |  |  |             'host'           => '127.0.0.1', | 
					
						
							|  |  |  |             'database'       => 'bookstack-test', | 
					
						
							|  |  |  |             'username'       => env('MYSQL_USER', 'bookstack-test'), | 
					
						
							|  |  |  |             'password'       => env('MYSQL_PASSWORD', 'bookstack-test'), | 
					
						
							|  |  |  |             'port'           => $mysql_port, | 
					
						
							|  |  |  |             'charset'        => 'utf8mb4', | 
					
						
							|  |  |  |             'collation'      => 'utf8mb4_unicode_ci', | 
					
						
							|  |  |  |             'prefix'         => '', | 
					
						
							| 
									
										
										
										
											2019-09-07 06:36:16 +08:00
										 |  |  |             'prefix_indexes' => true, | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'strict'         => false, | 
					
						
							| 
									
										
										
										
											2015-09-03 01:26:33 +08:00
										 |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-24 00:26:39 +08:00
										 |  |  |     // Migration Repository Table
 | 
					
						
							|  |  |  |     // This table keeps track of all the migrations that have already run for
 | 
					
						
							|  |  |  |     // your application. Using this information, we can determine which of
 | 
					
						
							|  |  |  |     // the migrations on disk haven't actually been run in the database.
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     'migrations' => 'migrations', | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-24 00:26:39 +08:00
										 |  |  |     // Redis configuration to use if set
 | 
					
						
							| 
									
										
										
										
											2021-11-06 00:18:06 +08:00
										 |  |  |     'redis' => $redisConfig ?? [], | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ]; |