我已经使用Codeigniter构建了一个简单的Web应用程序。我已经为本地主机和实时服务器设置了开发和生产环境。
当我将.env设置为“开发”时,即使在实时服务器上,一切都可以正常工作。将.env更改为“生产”后,我的网站立即引发错误:
传递给CodeIgniter \ Database \ Database :: load()的参数1必须为数组类型,即给定的对象。
我不知道为什么在开发中不会抛出此错误。所以我认为它是由于错误的原因抛出的?
.env
# Example Environment Configuration file # # This file can be used as a starting point for your own # custom .env files, and contains most of the possible settings # available in a default install. # # By default, all of the settings are commented out. If you want # to override the setting, you must un-comment it by removing the '#' # at the beginning of the line. #-------------------------------------------------------------------- #-------------------------------------------------------------------- # ENVIRONMENT #-------------------------------------------------------------------- CI_ENVIRONMENT = production #-------------------------------------------------------------------- # APP #-------------------------------------------------------------------- # app.baseURL = '' # app.forceGlobalSecureRequests = false # app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler' # app.sessionCookieName = 'ci_session' # app.sessionSavePath = NULL # app.sessionMatchIP = false # app.sessionTimeToUpdate = 300 # app.sessionRegenerateDestroy = false # app.cookiePrefix = '' # app.cookieDomain = '' # app.cookiePath = '/' # app.cookieSecure = false # app.cookieHTTPOnly = false # app.CSRFProtection = false # app.CSRFTokenName = 'csrf_test_name' # app.CSRFCookieName = 'csrf_cookie_name' # app.CSRFExpire = 7200 # app.CSRFRegenerate = true # app.CSRFExcludeURIs = [] # app.CSPEnabled = false #-------------------------------------------------------------------- # DATABASE #-------------------------------------------------------------------- # database.default.hostname = localhost # database.default.database = ci4 # database.default.username = root # database.default.password = root # database.default.DBDriver = MySQLi # database.tests.hostname = localhost # database.tests.database = ci4 # database.tests.username = root # database.tests.password = root # database.tests.DBDriver = MySQLi #-------------------------------------------------------------------- # CONTENT SECURITY POLICY #-------------------------------------------------------------------- # contentsecuritypolicy.reportOnly = false # contentsecuritypolicy.defaultSrc = 'none' # contentsecuritypolicy.scriptSrc = 'self' # contentsecuritypolicy.styleSrc = 'self' # contentsecuritypolicy.imageSrc = 'self' # contentsecuritypolicy.base_uri = null # contentsecuritypolicy.childSrc = null # contentsecuritypolicy.connectSrc = 'self' # contentsecuritypolicy.fontSrc = null # contentsecuritypolicy.formAction = null # contentsecuritypolicy.frameAncestors = null # contentsecuritypolicy.mediaSrc = null # contentsecuritypolicy.objectSrc = null # contentsecuritypolicy.pluginTypes = null # contentsecuritypolicy.reportURI = null # contentsecuritypolicy.sandbox = false # contentsecuritypolicy.upgradeInsecureRequests = false #-------------------------------------------------------------------- # HONEYPOT #-------------------------------------------------------------------- # honeypot.hidden = 'true' # honeypot.label = 'Fill This Field' # honeypot.name = 'honeypot' # honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
app / config / database
namespace Config; /** * Database Configuration * * @package Config */ class Database extends \CodeIgniter\Database\Config { /** * The directory that holds the Migrations * and Seeds directories. * * @var string */ public $filesPath = APPPATH . 'Database/'; /** * Lets you choose which connection group to * use if no other is specified. * * @var string */ public $defaultGroup = 'development'; /** * The default database connection. * * @var array */ public $development = [ 'hostname' => 'localhost:8889', 'username' => 'root', 'password' => 'root', 'database' => 'resources', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', ' ' => TRUE, 'DBDebug' => TRUE, 'cacheOn' => FALSE, 'cacheDir' => '', 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'strictOn' => FALSE ]; public $tests = [ 'hostname' => 'removed', 'username' => 'removed', 'password' => 'removed', 'database' => 'removed', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => TRUE, 'DBDebug' => TRUE, 'cacheOn' => FALSE, 'cacheDir' => '', 'charset' => 'utf8', 'DBcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'strictOn' => FALSE ]; public $production = [ 'hostname' => 'removed', 'username' => 'removed', 'password' => 'removed', 'database' => 'removed', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => TRUE, 'DBDebug' => TRUE, 'cacheOn' => FALSE, 'cacheDir' => '', 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'strictOn' => FALSE ]; /** * This database connection is used when * running PHPUnit database tests. * * @var array */ /*public $tests = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => '', 'password' => '', 'database' => ':memory:', 'DBDriver' => 'SQLite3', 'DBPrefix' => 'db_', // Needed to ensure we're working correctly with prefixes live. DO NOT REMOVE FOR CI DEVS 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'cacheOn' => false, 'cacheDir' => '', 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];*/ //-------------------------------------------------------------------- public function __construct() { parent::__construct(); // Ensure that we always set the database group to 'tests' if // we are currently running an automated test suite, so that // we don't overwrite live data on accident. if (ENVIRONMENT === 'testing') { $this->defaultGroup = 'tests'; // Under Travis-CI, we can set an ENV var named 'DB_GROUP' // so that we can test against multiple databases. if ($group = getenv('DB')) { if (is_file(TESTPATH . 'travis/Database.php')) { require TESTPATH . 'travis/Database.php'; if (!empty($dbconfig) && array_key_exists($group, $dbconfig)) { $this->tests = $dbconfig[$group]; } } } } elseif (ENVIRONMENT == 'development') { $this->defaultGroup = 'development'; } else { $this->defaultGroup = ENVIRONMENT == 'production'; } } //-------------------------------------------------------------------- }
为什么我的代码可以在开发中正常运行而在生产中却没有错误?
我什至不确定要发布什么其他代码,因为CI_ENVIRONMENT是我要更改的唯一变量。