首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL不能通过CodeIgniter工作,但在普通PHP中工作得很好?

MySQL不能通过CodeIgniter工作,但在普通PHP中工作得很好?
EN

Stack Overflow用户
提问于 2016-04-13 01:15:54
回答 3查看 229关注 0票数 1

所以这是一个非常奇怪的错误。

下面是我的application/config/database.php文件的格式:

代码语言:javascript
复制
$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__);

当我加载网站时,我得到了这个错误:

代码语言:javascript
复制
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

现在,这是奇怪的部分。我在该文件夹中创建了一个新文件,代码如下:

代码语言:javascript
复制
<?
define('BASEPATH', 'active');
require_once "database.php";

当我从命令行运行php test.php时会有什么反应?

代码语言:javascript
复制
<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可以从命令行运行,但尝试主站点会失败?请帮帮忙,我现在有点不知所措。

EN

回答 3

Stack Overflow用户

发布于 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协议建立连接。

票数 0
EN

Stack Overflow用户

发布于 2016-04-13 02:37:09

谢谢你的帮助!

我想通了。这实际上是因为selinux禁止从Apache访问数据库。我运行了setsebool -P httpd_can_network_connect_db 1,它给它打了补丁。

票数 0
EN

Stack Overflow用户

发布于 2016-04-13 03:16:28

database.php中删除它。错误的

代码语言:javascript
复制
$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__);

数据库配置应为

代码语言:javascript
复制
$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中添加以下内容

代码语言:javascript
复制
$autoload['libraries'] = array('database');

如何检查数据库是否已加载?

如果出现错误,则会显示下图(图01)中的。如果没有错误,它会像通常的一样加载你的站点。

图像01

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36579958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档