1. 程式人生 > >Linux下PHP開發之旅-2.開發環境相關設定探索

Linux下PHP開發之旅-2.開發環境相關設定探索

一.預設目錄在哪兒?

開始時面對該xampp整合開發環境的相關配置有點不知所錯,於是便先想著找httpd.conf,通過該檔案,對該整合環境的配置檔案關係有了大致瞭解,具體操作如下;

cd /opt/lampp/etc

vi httpd.conf

預設ServerName

預設網頁等資源所在目錄:

對其它配置檔案的包含引入:

開啟linux的hosts檔案,我們可以看到對應的主機名(Hostname)和域名(Domain)對映關係:
             vi /etc/hosts

二.讓php在命令列中跑起來

經過查閱相關資料,要讓lampp的php在ubuntu中能執行起來,需要新增相關的環境變數:

sudo gedit /etc/profile

export PATH=/opt/lampp/bin:$PATH

           使配置立即生效:

source /etc/profile

檢視環境變數是否成功加入:

echo $PATH

 這時建立一個用來測試的php檔案,存放在 /home/yang/Downloads/1.php

<?php
   $i="hello world";
   echo "該變數是:"."$i";
   echo "\n";
?>

在命令列中進行執行測試:

             nice! 測試通過,可以進行下一步了.

三.php的相關配置

1.檢視php在apache中的相關配置

開啟/opt/lampp/etc/httpd.conf檔案,可看到php模組的載入部分為:

            在該檔案此處可配置.php檔案的執行方式:

            增添內容為:

             #設定三種檔案字尾都又php模組來"執行"

             Add AddType application/x-httpd-php .php   .php3    .ppp

             在/opt/lampp/etc/extra/httpd-xampp中,也可以發現起到相同作用的配置語句:

2.配置php.ini

          通過localhost--->點選主頁中的php.ini 我們可知php.ini在該整合環境中的預設位置

         

         用vi 開啟該檔案並使用vi 的search功能找到時區設定:

          sudo vi /opt/lampp/etc/php.ini

          按住 shift+:  -----> 輸入 /timezone ----> n鍵查詢下一個-->退出並儲存

          這樣就將時區設定成我國本地.

四.測試資料庫連線

        在/opt/lampp/htdocs/ 目錄下,我們寫測試檔案 2.php

<?php
        //資料庫連線測試
        $conn = mysql_connect("localhost","root","123");
        if($conn)
        {
                echo "資料庫連線成功";
        }
        
?>

       在瀏覽器中地址攔輸入如下地址,如果顯示"資料庫連線成功"則說明該部分工作正常.

五.虛擬主機配置

1.埠監聽

    埠:就是一個數字,目的是讓一臺電腦(對外只有一個IP)能夠對外提供多項服務,行業預設的有如下常見服務和埠號:

    web服務:80

    ftp服務:21

    郵件收取服務:110

    mysql資料庫服務:3306

    一臺電腦中,有6萬個埠,但通常一臺伺服器,一般只提供幾個或10幾個服務.apache的埠監聽設定,是指apache這個軟體針對當前伺服器哪些埠提供web服務.

   apache中的埠監聽設定為:

     我們新增一個808埠進行測試:

   

      可見,新增的埠號起到了作用.

2.主機配置關鍵項

    主機,虛擬主機,web站點,是指一個可以通過瀏覽器並使用某個域名進行訪問的"web應用".

    一個主機(站點),最核心的就兩件事:

             主機(站點)的名字: ServerName "主機名"

             主機(站點)的實際資料夾位置: Documentot    "站點的實際完整路徑"

      apache 的作用其實就是一個"轉換"角色:將當前電腦中的某個資料夾,對外以某個域名(站點)的方式展現出來,換句話說站點的本質就是一個資料夾.

      /opt/lampp/etc/httpd.conf 中的預設有關配置為:

 

             當一個請求通常域名解析進入到當前apache並埠匹配成功後,apache就會開始提供服務:
             1.在站點設定中找ServerName項,看是否匹配請求中的主機名;

             2.如果找到,則在對應的目錄(DucumentRoot配置項)中找相應的檔案(可能是index.php或其他)

             3.如果找到,則返回該檔案(或呼叫php語言模組執行後返回)

             4.如果沒找到對應請求中的主機名,那麼就將第一個主機當做準備提供服務的主機

                 由此可見,只要ip解析和埠能夠進入到當前伺服器並匹配apache的埠設定,則apache一定會提供服務,即使主機名不匹配.

           根據上述思想我們來進行一些測試:

           將/opt/etc/httpd.conf 中的三個地方修改:

並在 /etc/hosts中進行如下增添:

/opt/lampp 用來測試的php檔案為:

<?php
        echo "you are visiting the resource by self configuration";
?>

在瀏覽器中測試:

 
 

3.配置資料夾訪問許可權

        資料夾的訪問許可權在該標籤下進行:

      常見設定語句:

       <Directory "/opt/lampp/htdocs/">
            #下一行用於設定"可顯示檔案列表"(當無顯示網頁的時候)
            Options Indexes
            #用於設定許可權的判斷順序:先拒絕,後允許
            Order deny,allow
            #允許所有(這裡沒有設定拒絕)
            Allow from all
       </Directory>

      我們訪問一個站點的時候,可以設定要訪問的網頁,比如 www.dachongzi.com/index.php,也可以不指定如:www.dachongzi.com

      對於後一種情況,apache就可以設定"預設網頁"以提供給使用者,形式為:

      此時,對於沒有明確要訪問網頁的請求,會按順序從前往後找這些檔案,找到後就"返回"給使用者.但是,如果最終都沒有找到,Options中的Indexes 就發揮作用了:顯示該資料夾中的所有檔案.

       我們也可以將DirectoryIndex設定項放在一個單獨的站點或單獨的資料夾中,則只對該單獨的站點或單獨的資料夾起作用.

<Directory "/opt/lampp/htdocs/">
            #下一行用於設定"可顯示檔案列表"(當無顯示網頁的時候)
            Options Indexes
            #用於設定許可權的判斷順序:先拒絕,後允許
            Order deny,allow
            #允許所有(這裡沒有設定拒絕)
            Allow from all
            #DirectoryIndex設定,此時只對該資料夾有效
            DirectoryIndex 1.php
       </Directory>

4.主機別名設定

在應用中,我們常常可以使用以下兩種方式來訪問一個站點:

             http://www.dachongzi.com

             http://abc.com

            通常,現在越來越流行後者,此時,就相當於"2個站點(主機名)"但訪問的是一個內容

            此時就需要使用主機別名來實現:

            ServerAlias     別名1    別名2    別名3      ...

 

5.資料夾訪問控制的檔案控制方式

          通常,我們在config配置檔案中,使用Directory 配置項,目的是用來控制資料夾的訪問許可權.我們也可以使用一個獨立的檔案來控制檔案某資料夾的訪問許可權,該檔名必須是: .htaccess

         注意:

          1.只有字尾和點號(無檔名部分);

          2.該檔案必須放在要被控制訪問許可權的資料夾中(不同的資料夾可以放不同的該檔案);

          3.其"上級資料夾"(通常是Directory設定中的資料夾)必須使用如下程式碼允許 .htaccess發揮作用:

              AllowOverride All

          4.  .htaccess 檔案中出現程式碼,幾乎可以跟Directory設定出現的程式碼一樣;

          5.如果 .htaccess 檔案有效,則其設定會覆蓋上級設定;

          6.此.htaccess檔案修改後可以立即發揮作用,無需重啟apache.

6.目錄別名設定Alias

      在一個站點中,如果不存在某個資料夾(目錄),我們可以通過配置項,來做到"對外"看起來卻存在一樣,比如:

       http://www.dachongzi.com/phpmyadmin/           假設站點中不存在 phpadmin 目錄

       但是我們可以讓該地址"可訪問",這就是目錄別名(虛擬目錄)

       開啟 /opt/lampp/etc/extra/httpd-xampp.conf 我們能看到相關設定:

7.多站點配置

      首先,在/opt/etc/httpd.conf 中開啟多站點配置檔案:

      

      對httpd-vhosts.conf檔案修改進行多站點配置:

#設定 www.dachongzi.com 站點
<VirtualHost *:80>
    ServerName www.dachongzi.com
    #設定主機別名,即用該別名也可以訪問(前提是域名解析正確)
    ServerAlias dachongzi.com
    #設定主機目錄
    DocumentRoot "/opt/lampp/htdocs/myweb"
    #下一行的資料夾路徑要跟上一行的DocumentRoot一樣
    <Directory "/opt/lampp/htdocs/myweb">
        Options Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        deny from 192.168.3.33
        DirectoryIndex index.php page1.php page2.php
    </Directory>
</VirtualHost>

        經測試,多站點配置成功起作用!


      下部分,將通過大量的php示例從簡單到複雜探索php