Openwrt下安裝Lighttpd+PHP+Mysql總結
注意:記得給開發板設置好網絡,另外,開發板和虛擬機下操作可能不同,最好買個開發板吧,我在虛擬機上給相關系統裝mysql出了很多問題還是進不了mysql,但是在板子上所有操作一次性通過,僅僅是在最后寫php5數據庫操作測試程序時出了一點問題,這個問題我在文章最后進行了說明。
一、安裝LightHttpd
1.安裝命令
opkg update
opkg install lighttpd lighttpd-mod-cgi
2.編輯/etc/lighttpd/lighttpd.conf文件
vim/etc/lighttpd/lighttpd.conf
更改后結果:
3.創建/srv/www目錄
mkdir /srv/www
4.啟動lighttpd和設置lighttpd服務隨開機啟動
/etc/init.d/lighttpd start
/etc/init.d/lighttpd enable
二、安裝PHP
1.安裝PHP
opkg update
opkg install php5 php5-cgi php5-mod-session
2.編輯/etc/php.ini:設置doc_root =“/srv/www”
3.編輯/etc/lighttpd/conf.d/30-cgi.conf文件,添加內容如圖所示:
vim/etc/lighttpd/conf.d/30-cgi.conf
注意:python行尾記得加逗號。
4.重啟Lighttpd
/etc/init.d/lighttpd restart
5.使用如下命令在/srv/www目錄下簡單添加一個php文件,以此來測試PHP是否安裝成功:(別敲錯命令)
echo"<?php phpinfo(); ?>" > /srv/www/index.php
6.最后,在瀏覽器中輸入網址http://192.168.8.66:81/index.php(你的板子設置的IP和你剛才改的端口號81以及剛才用命令生成的文件名index.php),以此來查看PHP和http是否安裝成功。如果成功如下圖所示:
三、安裝MYSQL
1.安裝mysql及相關組件
opkg install libpthread libncurses libreadline mysql-server
2.初始化mysql(很重要,命令不要敲錯)
sed -i 's,^datadir.*,datadir = "/srv/mysql",g' /etc/my.cnf
sed -i 's,^tmpdir.*,tmpdir = "/tmp",g' /etc/my.cnf
mkdir -p /srv/mysql
mysql_install_db--force
/etc/init.d/mysqld start
/etc/init.d/mysqld enable
mysqladmin -u root password'123'
3.安裝關聯組件
opkg update
opkg install php5-mod-mysql
4.將mysql.so配置到/etc/php.ini中
sed-i 's,;extension=mysql.so,extension=mysql.so,g' /etc/php.ini
5.安裝如下組件,使PHP可以使用Mysqli
opkg update
opkg install php5-mod-mysqli
6.將mysqli.so配置到/etc/php.ini中(注意mysqli不是mysql,和上面的步驟沒有重復,這是因為php5中數據庫操作變化引起的)
sed-i 's,;extension=mysqli.so,extension=mysqli.so,g' /etc/php.ini
7.到/etc/my.conf下查看你的數據庫套接字文件地址,如下圖所示:
vim /etc/my.conf
8.配置/etc/php.ini文件,修改[MySQL]下的內容,並把[MySQL]的內容復制一份,並修改成MySQLi,如下圖所示:(不要改錯了,和你之前設置的一樣)
vim/etc/php.ini
到此,MySQL就配置完了。然后測試一下即可。
四、測試及注意事項
進入mysql下查看一下,看你有什么數據庫,順便驗證一下mysql是否能用,然后寫一個php文件測試一下能不能通過PHP鏈接到數據庫,如果都沒有問題,那么說明安裝配置成功。
能否進入mysql,結果如下:
那么我們可以測試一下是否能用php鏈接上mysql數據庫,能打印成功即可,代碼如下:
$db = new mysqli('127.0.0.1','root','123','mysql');
if(mysqli_connect_errno())
{
echo '';
echo 'Error: Could not connect to database,please try later';
exit;
}
else
{
echo 'Connect database successfully.!';
echo '';
}
?>
在瀏覽器中訪問192.168.8.66:81/connect_mysql_test.php,結果如下:
注意:這里有一個問題,在寫PHP文件時,例如我上面的代碼,服務器寫的不是localhost而是127.0.0.1,這是因為問我寫localhost時會報如下錯誤:
Warning: mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket '/tmp' (146) in/srv/www/connect_mysql_test.php on line 2
Error: Could not connect to database,please try later
所以,如果你出現了上述類似錯誤,不妨試試將服務器地址改成你配置時的地址。例如我上面的地址是“127.0.0.1”,所以我將localhost改成127.0.0.1后就OK了。
對了,還有一點,PHP5不知道從什么版本開始不支持mysql了,而是mysqli了,沒辦法,面向對象的大勢不可逆啊,語言終究只是工具,哪個好用用哪個(唉?又偏題了)。如果你在寫PHP時用mysql鏈接數據庫,就會報如下錯誤:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in/srv/www/connect_mysql_test.php on line 2