本文主要說明如何在Ubuntu下配置PHP開發環境LAMP。
Ubuntu 搭建 php 環境
所謂LAMP:Linux,Apache,Mysql,PHP
安裝 Apache2:
sudo apt-get install apache2
安裝PHP模塊:
sudo apt-get install php5
安裝Mysql
sudo apt-get install mysql-server
其他模塊安裝:
sudo apt-get install libapache2-mod-php5
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo apt-get install php5-gd
前兩個很容易明白,要想apache能夠解析PHP,就需要藉助這兩個模塊來找到php engine。
第三個在php操作mysql數據庫時用到,大多數人都有數據庫編程經驗,所以這就不用多解釋了
第四個GD庫。
apache2相關配置
安裝完上述的各個模塊後,實際上基本配都OK了,只是一些小的細節問題
基本上多有的配置都在/etc/apache2目錄及其子目錄下完成,故一定要搞清楚這個目錄結構。
1.apache根目錄
安裝完apache2,根目錄在/var/www下,可以通過http://localhost/測試一下是否好用。
當然也可以在該目錄下新建一個文件test.html來試一試http://localhost/test.html。
2.PHP解析問題
安裝完貌似php的解析都有點問題,瀏覽php網頁會保存,apache沒有將其解析爲網頁。
網上一般說的是需要在httpd.conf中添加XXXX,對其他的linux系統可能確實如此,但是Ubuntu有點特殊。
Ubuntu的apache2配置在/etc/apache2目錄下。
這個目錄下有個apache2.conf文件,這個文件通過包含其他配置文件涵蓋了所有的apache2系統配置信息。
php解析部分在的配置在/etc/apache2/mods-available下的php5.conf和php5.load中,apache2.conf文件中並沒有將這兩個文件包含進來,只要包含進去就OK了。
*************************************************
在apache2.conf中找到
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
在其後面添加
Include /etc/apache2/mods-available/php5.load
Include /etc/apache2/mods-available/php5.conf
*************************************************
另外一種方法就是將這兩個文件鏈接到mods-enabled目錄下:
sudo ln -s /etc/apache2/mods-available/php5.load /etc/apache2/mods-enabled/php5.load
sudo ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf
這一種方式更好一點,沒有破壞apache2本身的配置結構。
*************************************************
3.改變apache2的默認目錄到當前的開發目錄
apache2的默認目錄配置在/etc/apache2/sites-enabled/00default文件中。
找到該文件中的DocumentRoot項, 將/var/www改爲你的開發目錄就OK了。
當然,還有一種方法就是不該邊默認目錄,只是在var/www下建立一個到你的目錄的鏈接。
比如你的目錄在/home/username/phptest,那麼你只要
sudo ln -s /home/username/phptest /var/www/phptest
這樣你就可以通過http://localhost/phptest訪問你的工作目錄了。
[注意]鏈接文件名中不能含有“.”,否則apache2會將其當作爲一個文件試圖解析而無法達到鏈接目錄的效果。
個人推薦用後一種方式,這樣可以多個工作目錄並行開發。
配置中常用命令
重啓apache
sudo /etc/init.d/apache2 restart
Ubuntu下安裝PHP支持
$sudo apt-get install libapache2-mod-php5
$sudo apt-get install php5
如果想支持圖形就加php5-gd,如果想支持Mysql就加php5-mysql,這裏之所以要單獨列出libapache2-mod-php5,主要是由於php5的依賴關係沒有做好,有可能會安裝上libapache-mod-php5的包,所以爲了避免不必要的麻煩,乾脆還是單獨指定比較好。
修改PHP配置文件,以限制內存和文件最大上傳尺寸
我們編輯/etc/php5/apache2/php.ini文件,先做一般配置,在改動之前,請先將該配置文件做個備份。以便在出錯的時候可以恢復。
>memory_limit = 8M =>修改成你所需的內存大小
>upload_max_filesize = 2M =>修改文件最大上傳尺寸
=============
>extension=mysql.so 支持Mysql服務
>extension=gd.so 支持gd函數
=============
其實在Ubuntu下,如果你安裝了php5-mysql和php5-gd之後,會自動修改以上二行的,我們做的只不過是確認一下它們前面的註釋符是否去掉。
bobyang 寫道:
補充:
1。目前大多數php的open source都是用php4寫的,爲了兼容以前的php版本,有時需要將register_long_arrays打開,否則$HTTP_GET_VARS和$HTTP_POST_VARS等變量將無法使用,會出現一些莫名其妙的問題。
2。另外,在裝完php5後最好確認一下/etc/apache2/mods-enabled/下是否有鏈接:
php5.load -> /etc/apache2/mods-available/php5.load
加固PHP,以增強安全性。
注意,下面的安全性要因情況而定,所以我已經把它們的功能寫清楚了,如果有問題的話,看看是否由於下面哪種限制條件所造成,可相應將其註釋掉。
下面我們開始加固php,我們再次編輯/etc/php5/apache2/php.ini文件,之所以沒有一次改完,主要是爲了給大家一個清晰的思路。
>#打開安全模式,打開他的好處就是PHP文件只能訪問所有者和PHP文件所有着一樣的文件,即使在chroot環境下也無法訪問jail中屬主不一樣的文件,類似於php shell這樣的後門就沒用武之地了哦,phpshell是很流行的php後門,他可以執行系統命令,就象他的名字一樣,和 shell很接近。
>safe_mode = On
>#下面的設置就限制了fopen(), file()等函數可以操作的目錄範圍,避免了入侵者非法讀取文件,一定要在/var/www後面加" /",否則/var/wwww下的文件也能被訪問 。該選項會禁止任何不在/var/www/目錄下的PHP文件運行,包括任何以軟鏈接方式鏈到/var /www/目錄下的程序,如PhpMyAdmin包,就在該選項設定後無法正常運行。
>open_basedir = /var/www/
>#禁止使用phpinfo和get_cfg_var函數,這樣可以避免泄露服務信息,一般在在確認PHP能正常工作之後再使之關閉
>disable_functions = phpinfo,get_cfg_var
>#設置php程序錯誤日誌
>error_reporting = E_ALL
>log_errors = On
>error_log = /var/log/php_err.log
>#如果php程序沒有指明需要register_globals的話,最好把register_globals設置爲Off,這樣可以避免很多安全問題的。注意,如果你的程序是需要register_globals的話,可千萬別關。Ubuntu默認是關閉的。
>register_globals = Off
>#禁止打開遠程地址,記得最近出的php include的那個漏洞嗎?就是在一個php程序中include了變量,那麼入侵者就可以利用這個控制服務器在本地執行遠程的一個php程序,例如phpshell,所以我們關閉這個。
>allow_url_fopen = Off
測試PHP5是否安裝成功
sudo gedit /var/www/testphp.php
在裏面寫入然後在Firefox中打開:http://localhost/testphp.php
應該能看到下面的畫面,很長的,俺截了一下php5.png
看完後把testphp.php刪掉,可能會有安全風險
安裝MySqlsudo apt-get install mysql-server********************上面的命令極有可能出現問題,就是告訴你有部分依賴的問題,這時千萬別聽信別人的信口亂說,follow me,否則你很有可能重裝系統,信不信走着試試一句話,更新源有問題系統-》系統管理-》軟件源,選擇主服務器,再次運行上面的命令,OK了嗎?go on......注意設置mysql root賬號。
MySql初始只允許本機(127.0.0.1)連接,如果想多臺機子使用或者向Internet開放的話,
編輯/etc/mysql/my.cnfsudo gedit /etc/mysql/my.cnf
找到bind-address = 127.0.0.1
用#註釋掉,象這樣#bind-address = 127.0.0.1
MySql默認沒有設置root密碼,本機的root用戶也沒有密碼,有風險是吧,這樣
mysqladmin -u root password your-new-password
mysqladmin -h root@local-machine-name -u root -p password your-new-password(這裏我怎麼也連接不上mysql服務器,最後在mysql-admin裏面改的)
sudo /etc/init.d/mysql restart
安裝MYSQL Administrator
sudo apt-get install mysql-admin
安裝好後在Gnome-應用程序-系統工具-MySQL Administrator這裏俺遇到了一個問題,就是運行MySQL Administrator後,點擊User Administrator後,整個MySQL Administrator掛死,最後還是解決了,方法見後面
安裝MYSQL for Apache HTTP Server
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo apt-get install phpmyadmin
要讓PHP與MySql一起工作,編輯
sudo gedit /etc/php5/apache2/php.ini
取消對;extension=mysql.so的註釋,象這樣
…
extension=mysql.so
…
保存文件,然後
sudo /etc/init.d/apache2 restart
測試:http://localhost/phpmyadmin 這裏俺能修改用戶,新增用戶等