補(bǔ)充一個(gè)檢測apach的配置語法的命令: 9
一個(gè)站點(diǎn)的2個(gè)核心信息為: 23
設(shè)置主機(jī)(站點(diǎn))的名字:服務(wù)器名,站點(diǎn)名 23
設(shè)置主機(jī)(站點(diǎn))的物理路徑: 24
目錄訪問權(quán)限中的“分布式權(quán)限”: 25
今天的目標(biāo)1:
<?php
echo ?“hello world”; //表明配置好了apache
echo ?“
現(xiàn)在時(shí)間:”??. ?date(“Y-m-d H:i:s”) ; //表明配置好了php
$link ?= mysql_connect(“l(fā)ocalhost”, ?“rott”, “123”?); //表明配置好了mysql
?>
目標(biāo)2:
能夠建立多個(gè)站點(diǎn),比如:
www.abc.com能訪問一個(gè)“網(wǎng)站”;
www.php39.com,能訪問另一個(gè)“網(wǎng)站”
縮寫:Personal Home Page ==>>PHP:HypeText Preprocessor
1995PHP/FI,Rasmus Lorderf,Personal Home Page
1997PHP/FI2.0,1998PHP3,2000PHP4,2005PHP5
web服務(wù)器端腳本:主要作用
應(yīng)用程序圖形界面
運(yùn)行php文件:php.exe??-f ?"php文件路徑"
運(yùn)行php代碼:php.exe??-r??"php腳本代碼"
php作為一門語言,本身可以是一個(gè)純綠色版的“文件夾”——稱之為“php語言包”
其中,有一個(gè)文件為:php.exe,可以用來它“執(zhí)行”php代碼:
演示1:
這是1base.php文件:
通過php.exe去“執(zhí)行”它,如下:
演示2: ?直接運(yùn)行php代碼:
形式:
php.exe ?-r ?"php腳本代碼"
一個(gè)重要觀念:
web軟件的運(yùn)行模式中,總是先在客戶端(瀏覽器端),發(fā)起一個(gè)“請求”,然后,服務(wù)器端才產(chǎn)生反饋動(dòng)作(就是“運(yùn)行”程序),并因此而返回給該瀏覽器一定的信息——就是所謂的應(yīng)答(響應(yīng));
其中運(yùn)行過程中,所涉及到的一些相關(guān)技術(shù)或軟件如下:
瀏覽器端: 服務(wù)器端 數(shù)據(jù)庫端
html 服務(wù)器軟件語言 mysql
css apache PHP oracle
js IIS java mssql
..... ...... ......
其中,瀏覽器端的技術(shù)是“無可替代”的,而其他層面的,都是有可替代性。
瀏覽器輸入地址,回車(發(fā)送請求)
根據(jù)規(guī)則找到對應(yīng)web服務(wù)器。規(guī)則如下:
首先在本機(jī)hosts文件中找對應(yīng)IP
hosts文件位置:操心系統(tǒng)/system32/drivers/etc/
注意:需要以管理員身份打開編輯器,才能編輯保存它
如果hosts中沒有找到,則到互聯(lián)網(wǎng)上找對應(yīng)IP(DNS服務(wù)器中)
如果還是沒有找到,則終止請求,返回“找不到服務(wù)器”提示
web服務(wù)器取得對應(yīng)文件(就是請求的文件)
如有需要(比如php文件),對該文件進(jìn)行一定的處理(比如php代碼執(zhí)行)
將文件(或執(zhí)行結(jié)果文件)返回給瀏覽器(返回應(yīng)答)
瀏覽器接收到文件
瀏覽器處理文件(顯示/執(zhí)行)
注意:
成功后,瀏覽器中瀏覽如下:
apache安裝后的目錄結(jié)構(gòu):
將剛才的網(wǎng)頁1base.php放到apache的htdocs文件中,并通過瀏覽器“瀏覽”:
可見,根本無法運(yùn)行php?。。?/p>
其實(shí),我們就需要去配置apache了:
分2步:
第一步:
裝載php“模塊”——其實(shí)就是指php語言包中的一個(gè)文件而已!
A:首先,我們將php語言模塊,拷貝到計(jì)劃的目錄中來:...... /bj-php-39/amp/php/
B:打開apache的配置文件:apache安裝位置/ conf / httpd.conf
第二步:
指定php后綴的文件,去“找”這個(gè)php模塊處理(執(zhí)行)——這里,基本是固定寫法:
然后,重啟apache,再次刷新剛才的頁面:
可見,php已經(jīng)通過apache發(fā)揮作用了!
注意:apache配置文件修改后,必須重啟apache,才能生效!
另外:第2步中“設(shè)定php后綴的文件由php模塊去處理”的命令,可以有另一種寫法,如下:
命令所在位置:
apache安裝位置/bin/httpd.exe
命令使用方式:
httpd.exe ?-t
命令結(jié)果:
如果配置文件httpd.conf沒有語法錯(cuò)誤,就返回: syntax ?OK
如果有錯(cuò)誤,則會(huì)提示第幾行錯(cuò)誤!
用法1:強(qiáng)行拖入法
用法2:配置環(huán)境變量法:
我的電腦》屬性》高級(jí)系統(tǒng)設(shè)置》高級(jí)》環(huán)境變量》系統(tǒng)變量》path》編輯,
然后,在其中加入剛才httpd.exe文件所在的完整目錄路徑,注意使用英文分號(hào)(;)跟以前的內(nèi)容分開:
然后,就可以在cmd中直接使用:
先看php的代碼:
瀏覽的結(jié)果為:
這是,因?yàn)?,我們還沒有配置php語言模塊(語言引擎)的運(yùn)行時(shí)區(qū)!
需要去修改php的配置文件:
php的配置文件位置:
php語言包/php.ini
初始,并沒有該文件的直接版本,而是提供了2個(gè)選擇性版本:
我們采用php.ini-development,改其后綴就可以了!
第一步:
然后打開該文件,并查找關(guān)鍵字:timezone:
修改為:
第二步:
在apache的配置文件(httpd.conf)中,設(shè)置php.ini文件的路徑(位置):
然后,還是要重啟apache,然后,重新刷新剛才顯示時(shí)間的網(wǎng)頁,結(jié)果為:
理解一件事情:
php(語言模塊)是apache的眾多模塊之一!
mysql是php語言中的眾多模塊之一!
目標(biāo):運(yùn)行一行“連接mysql數(shù)據(jù)庫”的代碼:
但運(yùn)行結(jié)果卻是報(bào)錯(cuò):調(diào)用未定義的函數(shù)!
這是,因?yàn)椋琺ysql作為一個(gè)php的“模塊”尚未配置!
解決,分2步:
第一步:
在php.ini文件中,設(shè)定php模塊所在的路徑(查找關(guān)鍵字extension_dir):
我們要修改為指向php語言包中的ext這個(gè)目錄的“完整物理路徑”:
第2步:
“打開”mysql這個(gè)模塊就可以了(查找關(guān)鍵字php_mysql.dll):
修改為:
然后,重啟apache,重新瀏覽剛才的網(wǎng)頁,結(jié)果為:
下面就可以安裝mysql數(shù)據(jù)庫軟件,以“建立”mysql數(shù)據(jù)庫服務(wù)器。
然后,重新瀏覽剛才的php網(wǎng)頁(將代碼略修改為以下):
結(jié)果為:
主機(jī)名(服務(wù)器名/站點(diǎn)名): ServerName服務(wù)器名
站點(diǎn)位置(站點(diǎn)目錄路徑):DocumentRoot“實(shí)際物理路徑”
默認(rèn)情況下,apache安裝成功,就默認(rèn)配置好了一個(gè)“站點(diǎn)”,該站點(diǎn)的實(shí)際位置在:
apache安裝位置/htdocs/
默認(rèn)主機(jī)名是安裝時(shí)設(shè)置的,比如www.abc.com,當(dāng)然,也可以使用localhost
在apache的主配置文件httpd.conf中:
也可以寫為:
實(shí)際應(yīng)用中,我們幾乎都是80。
設(shè)置主機(jī)(站點(diǎn))的名字:服務(wù)器名,站點(diǎn)名
ServerName服務(wù)器名
舉例:
也可以設(shè)置為:
形式:
DocumentRoot ?“實(shí)際物理路徑”
重要觀念:
站點(diǎn)就是“文件夾”——我讓它當(dāng)站點(diǎn),它就是站點(diǎn)。
比如:
原始的站點(diǎn)在這里:
修改為:
在瀏覽“l(fā)ocalhost”,發(fā)現(xiàn)被進(jìn)制訪問(Forbidden),然后添加訪問權(quán)限,如下:
就可以了。
一個(gè)站點(diǎn),就是一個(gè)“目錄”。
每個(gè)目錄,都應(yīng)該給其設(shè)定“訪問權(quán)限”,語法如下:
<Directory ?“要設(shè)置權(quán)限的目錄路徑”>
#設(shè)置當(dāng)一個(gè)請求中沒有給定請求的文件名又沒有默認(rèn)網(wǎng)頁(首頁)的時(shí)候,顯示文件列表
Options ?Indexes
#設(shè)置權(quán)限控制的先后順序,只有2種:Deny,Allow(先拒絕,后允許),Allow,Deny(先允許后拒絕)
Order ?Deny,Allow
#Deny用于設(shè)定要拒絕訪問的來源地址或服務(wù)器名,幾乎沒有實(shí)際意義!
Deny ?from拒絕名單 ?比如:deny ?from ?192.168.3.8 ?172.180.4
Allow ?from允許名單 ??比如:Allow ?from ?all
#設(shè)置該文件夾下的“默認(rèn)網(wǎng)頁”(首頁),可以設(shè)置多個(gè),用于請求中不帶文件名的時(shí)候自動(dòng)使用該文件作為“返回”頁面。
DirectoryIndex ?index.php ?index.html ??main.php ?default.php ??abc.php ??123.html
</Directory>
對于某個(gè)目錄的訪問權(quán)限,我們在apache中使用Directory來設(shè)定,但可能不夠方便:
1,apache配置修改,必須重啟apache
2,某個(gè)站點(diǎn)中的“下級(jí)目錄”訪問權(quán)限,不方便單獨(dú)設(shè)置,
這種,可以稱為“集中式權(quán)限”;
分布式權(quán)限,就是:針對某個(gè)網(wǎng)站的任何一個(gè)下級(jí)目錄,都可以單獨(dú)去設(shè)置其訪問權(quán)限,并且可以不重啟apache就生效。
做法:分2步:
第1步:
在該站點(diǎn)對應(yīng)目錄權(quán)限的Directorty配置中添加一條:
第2步:
在該目錄下的任何子目錄中,創(chuàng)建一個(gè)特殊的文件(.htaccess),在該文件中寫所需要的“權(quán)限內(nèi)容”(幾乎跟Directory中的寫法一樣):
舉例:
www.php39.com/day1/中,初始可以瀏覽結(jié)果如下:
然后,在該文件夾中添加一個(gè)文件:.htaccess其內(nèi)容為:
(該ip不知是誰,反正不是我!)
在該day1文件夾中,就多了一個(gè)文件:
然后,重新訪問剛才路徑(刷新):
分3步:
第1步:
在apache的主配置文件httpd.conf中,“打開”多站點(diǎn)虛擬主機(jī)配置文件項(xiàng)(關(guān)鍵詞:vhosts):
初始:
修改為:
第2步:
在httpd-vhosts.conf文件中,設(shè)定希望提供“多站點(diǎn)”服務(wù)的IP地址和端口號(hào),通常默認(rèn)就是:*:80,其中“*”代表所有IP,默認(rèn)其實(shí)apache安裝好之后就設(shè)置好了,無需手動(dòng)設(shè)置(關(guān)鍵字NameVirtualHost):
第3步:
然后就一個(gè)站點(diǎn)一個(gè)站點(diǎn)加上!形式如下:
<virtualhost ?*:80>
#這里設(shè)置站點(diǎn)1的各項(xiàng)信息
</virtualhost>
<virtualhost ?*:80>
#這里設(shè)置站點(diǎn)2的各項(xiàng)信息
</virtualhost>
...........
注意:
1,先把httpd-vhosts.conf文件中的2個(gè)初始安裝生成的站點(diǎn),刪除?。?!
2,每個(gè)站點(diǎn)的設(shè)置項(xiàng),主要就3個(gè):
ServerName,
DocumentRoot,
<Directory>...</Directory>
3,在多站點(diǎn)配置中,第一個(gè)站點(diǎn)被稱為“默認(rèn)站點(diǎn)”,如果某個(gè)請求的域名無法跟任何一個(gè)站點(diǎn)“匹配”,就會(huì)當(dāng)做請求的是默認(rèn)站點(diǎn)去處理(應(yīng)答)
4,一旦實(shí)現(xiàn)了多站點(diǎn)配置,則最初安裝成功時(shí)的“默認(rèn)站點(diǎn)”就失效了,我們可以將“l(fā)ocalhost”當(dāng)做一個(gè)普通站點(diǎn)重新設(shè)置就可以了,也可以將其放在第一個(gè)位置又重新作為默認(rèn)站點(diǎn)。
舉例:
某個(gè)站點(diǎn)www.abc.com所對應(yīng)文件夾下有一個(gè)目錄為d1,則可以這樣訪問該目錄:
這個(gè)d1就稱為“真實(shí)目錄”;
虛擬目錄就是:
該站點(diǎn)下不存在某目錄名,但卻可以使用同樣的語法形式,去訪問,比如:
www.abc.com/d2??? //假設(shè)該站點(diǎn)目錄下根本就沒有d2這個(gè)目錄,此時(shí)卻可以訪問
實(shí)現(xiàn)這種技術(shù),就是所謂“目錄別名”(虛擬目錄)的設(shè)置,如下:
在一個(gè)站點(diǎn)中,做如下2步:
第1步:
設(shè)置目錄別名的名字和其對應(yīng)的“實(shí)際真實(shí)目錄(文件夾位置)”:
Alias ?/目錄別名的名字 ??“實(shí)際真實(shí)目錄(文件夾)的位置”
第2步:
設(shè)置該真實(shí)目錄的訪問權(quán)限(否則是禁止訪問的):
<Directory ??“真實(shí)目錄路徑”>
。。。。。。跟其他目錄權(quán)限設(shè)置一樣
</Directory>
???k~?