info.php在CentOS
公司主营业务:网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出新巴尔虎左免费做网站回馈大家。
64位虚拟机运行的时候,其中MySQL版本那一栏是空白信息。我查看了info.php源码,开始以为是MySQL数据库的用户名和密码填写错了,仔细检查没有错误之后,便查看了Apache的error_log,得到如下消息:
mysql_connect():
No
such
file
or
directory
在网上查了一下,说是本地socket设置与默认的不一样,导致php无法找到mysql的socket文件。根据网上提供的方法,需要做如下操作。
首先,在MySQL中用status查看数据库状态,如下所示:
mysql
Ver
14.14
Distrib
5.1.69,
for
redhat-Linux-gnu
(x86_64)
using
readline
5.1
Connection
id:
10
Current
database:
Current
user:
root@localhost
SSL:
Not
in
use
Current
pager:
stdout
Using
outfile:
''
Using
delimiter:
;
Server
version:
5.1.69
Source
distribution
Protocol
version:
10
Connection:
Localhost
via
UNIX
socket
Server
characterset:
latin1
Db
characterset:
latin1
Client
characterset:
latin1
Conn.
characterset:
latin1
UNIX
socket:
/var/lib/mysql/mysql.sock
Uptime:
20
hours
55
min
30
sec
其中,标红的部分是我们需要的。然后打开php.ini文件,需要将mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket的值设置为标红后面的那个目录。重启apache服务器,后续info.php工作正常,MySQL的版本信息能够正常显示了。
先来看看PHP5.3以前的mysql_query这个函数
resource mysql_query ( string $query [, resource $link_identifier] )
这里的$link_identifier是可选的,如果你没写,那么就会自动调用上一个使用mysql_connect的连接
而PHP5.3必须要加这个连接参数
所以你应该这样使用:
$link = mysql_connect('localhost:3306', 'db_user', 'db_pwd');
这里建立一个数据库的连接
然后每次使用mysql_query的使用你都应该把$link带上,如:
mysql_query('SQL语句', $link);
这样就不会出错了,你可以封装成一个类,在类结束的时候自动关闭连接
构造函数错咯
function __construct($host,$user,$pass,$database){
$this - host=$host;
$this - user=$user;
$this - pass=$pass;
$this - database=$database;
// echo $db;
$conn = mysql_connect($host,$user,$pass);
$db = mysql_select_db($this - database,$conn);
if($db){
echo "数据库成功";
}else{
echo "数据库失败";
}
}
//给你改咯哈这个类
class register{
private $host; //The host address
private $user; //The user
private $pass; //The password
private $database; //The database
private $conn;
//Connect with the database
function __construct($host,$user,$pass,$database){
$this - host=$host;
$this - user=$user;
$this - pass=$pass;
$this - database=$database;
$conn = mysql_connect($host,$user,$pass)or die("连接失败!");
mysql_select_db($this - database,$conn) or die("选择数据库失败!");
$this-conn=$conn;
}
//Add a user
function addUser($data){
$dataObj = $data;//类里边不要把变量写得太死
$userInfo = json_decode($dataObj,true); //change the data from the type of json to array.
$username = $userInfo[0];
$password = $userInfo[1];
$repassword = $userInfo[2];
//The sql to add the new user
@$sql_addUser = EOF
insert into users values("","$username","$password","$repassword");
EOF;
// var_dump($sql_addUser);break;
$result = mysql_query($sql_addUser,$this-conn);//指定连接,少些麻烦
// var_dump($result);break;
if($result){
echo 1;
}else{
echo 0;
}
}
}
这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示。一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉。
修改php.ini
将error_reporting = E_ALL改为error_reporting = E_ALL ~E_NOTICE
若还有问题到后盾网论坛问题求助专区
还有个不是办法的办法就是在每个文件头上加error_reporting(0); 虽然不好弄但是可以解决问题