info.php在CentOS
公司主營業(yè)務(wù):網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出新巴爾虎左免費做網(wǎng)站回饋大家。
64位虛擬機運行的時候,其中MySQL版本那一欄是空白信息。我查看了info.php源碼,開始以為是MySQL數(shù)據(jù)庫的用戶名和密碼填寫錯了,仔細檢查沒有錯誤之后,便查看了Apache的error_log,得到如下消息:
mysql_connect():
No
such
file
or
directory
在網(wǎng)上查了一下,說是本地socket設(shè)置與默認的不一樣,導(dǎo)致php無法找到mysql的socket文件。根據(jù)網(wǎng)上提供的方法,需要做如下操作。
首先,在MySQL中用status查看數(shù)據(jù)庫狀態(tài),如下所示:
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
其中,標(biāo)紅的部分是我們需要的。然后打開php.ini文件,需要將mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket的值設(shè)置為標(biāo)紅后面的那個目錄。重啟apache服務(wù)器,后續(xù)info.php工作正常,MySQL的版本信息能夠正常顯示了。
先來看看PHP5.3以前的mysql_query這個函數(shù)
resource mysql_query ( string $query [, resource $link_identifier] )
這里的$link_identifier是可選的,如果你沒寫,那么就會自動調(diào)用上一個使用mysql_connect的連接
而PHP5.3必須要加這個連接參數(shù)
所以你應(yīng)該這樣使用:
$link = mysql_connect('localhost:3306', 'db_user', 'db_pwd');
這里建立一個數(shù)據(jù)庫的連接
然后每次使用mysql_query的使用你都應(yīng)該把$link帶上,如:
mysql_query('SQL語句', $link);
這樣就不會出錯了,你可以封裝成一個類,在類結(jié)束的時候自動關(guān)閉連接
構(gòu)造函數(shù)錯咯
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?"數(shù)據(jù)庫成功";
}else{
echo?"數(shù)據(jù)庫失敗";
}
}
//給你改咯哈這個類
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("選擇數(shù)據(jù)庫失敗!");
$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?本身不需要事先聲明變量即可直接使用,但是對未聲明變量會有提示。一般作為正式的網(wǎng)站會把提示關(guān)掉的,甚至連錯誤信息也被關(guān)掉。
修改php.ini
將error_reporting?=?E_ALL改為error_reporting?=?E_ALL??~E_NOTICE
若還有問題到后盾網(wǎng)論壇問題求助專區(qū)
還有個不是辦法的辦法就是在每個文件頭上加error_reporting(0); 雖然不好弄但是可以解決問題