所以这是一个非常奇怪的错误。
下面是我的application/config/database.php文件的格式:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db_name';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
/* End of file database.php */
/* Location: ./application/config/database.php */
$mysqli=mysqli_connect
(
$db['default']['hostname'],
$db['default']['username'],
$db['default']['password'],
$db['default']['database']
);
echo (mysqli_connect_errno()) ? "Failed to connect to MySQL: " . mysqli_connect_error() : "Connected OK";
die( "\n<br>Filename: " .__FILE__ . "\n<br>Line number: " .__LINE__);当我加载网站时,我得到了这个错误:
Failed to connect to MySQL: Can't connect to MySQL server on '127.0.0.1' (13)
Filename: /var/www/html/application/config/database.php
Line number: 86现在,这是奇怪的部分。我在该文件夹中创建了一个新文件,代码如下:
<?
define('BASEPATH', 'active');
require_once "database.php";当我从命令行运行php test.php时会有什么反应?
<pre>Array
(
[hostname] => 127.0.0.1
[username] => root
[password] =>
[database] => db_name
[dbdriver] => mysql
[dbprefix] =>
[pconnect] =>
[db_debug] =>
[cache_on] =>
[cachedir] =>
[char_set] => utf8
[dbcollat] => utf8_general_ci
[swap_pre] =>
[autoinit] => 1
[stricton] =>
)
</pre>Connected OK
<br>Filename: /var/www/html/application/config/database.php
<br>Line number: 83为什么test.php可以从命令行运行,但尝试主站点会失败?请帮帮忙,我现在有点不知所措。
发布于 2016-04-13 01:25:00
在codeigniter数据库配置文件中替换hostname
$db['default']['hostname'] = 'localhost';
至
$db['default']['hostname'] = '127.0.0.1';
注意:当您使用localhost连接时,mysql会尝试使用Linux上的套接字和Windows操作系统上的管道建立连接。
IP地址使得MySQL能够使用TCP/IP协议建立连接。
发布于 2016-04-13 02:37:09
谢谢你的帮助!
我想通了。这实际上是因为selinux禁止从Apache访问数据库。我运行了setsebool -P httpd_can_network_connect_db 1,它给它打了补丁。
发布于 2016-04-13 03:16:28
在database.php中删除它。错误的
$mysqli=mysqli_connect
(
$db['default']['hostname'],
$db['default']['username'],
$db['default']['password'],
$db['default']['database']
);
echo (mysqli_connect_errno()) ? "Failed to connect to MySQL: " . mysqli_connect_error() : "Connected OK";
die( "\n<br>Filename: " .__FILE__ . "\n<br>Line number: " .__LINE__);数据库配置应为
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db_name'; # Set Database name
$db['default']['dbdriver'] = 'mysqli'; # Changed 如何加载数据库??
在apllication/config/autoload.php中添加以下内容
$autoload['libraries'] = array('database');如何检查数据库是否已加载?
如果出现错误,则会显示下图(图01)中的。如果没有错误,它会像通常的一样加载你的站点。
图像01

https://stackoverflow.com/questions/36579958
复制相似问题