php入門

php介紹 2

php的應(yīng)用領(lǐng)域 2

php運(yùn)行環(huán)境 4

web軟件的運(yùn)行模式 4

web運(yùn)行流程 4

php網(wǎng)頁運(yùn)行原理 5

安裝apache 6

配置apache以運(yùn)行php程序 8

補(bǔ)充一個(gè)檢測apach的配置語法的命令: 9

php的配置 11

時(shí)區(qū)配置: 11

php的模塊配置 13

mysql的安裝: 15

主機(jī)(站點(diǎn))配置 23

一個(gè)站點(diǎn)的2個(gè)核心信息為: 23

單站點(diǎn)配置項(xiàng) 23

端口監(jiān)聽: 23

設(shè)置主機(jī)(站點(diǎn))的名字:服務(wù)器名,站點(diǎn)名 23

設(shè)置主機(jī)(站點(diǎn))的物理路徑: 24

目錄訪問權(quán)限 24

目錄訪問權(quán)限中的“分布式權(quán)限”: 25

多站點(diǎn)的配置 27

站點(diǎn)別名的設(shè)置: 28

目錄別名(虛擬目錄)的設(shè)置: 29



今天的目標(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)站”

php介紹

縮寫:Personal Home Page ==>>PHP:HypeText Preprocessor

歷史

1995PHP/FI,Rasmus Lorderf,Personal Home Page

1997PHP/FI2.0,1998PHP3,2000PHP4,2005PHP5

php的應(yīng)用領(lǐng)域

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腳本代碼"



php運(yùn)行環(huán)境

web軟件的運(yùn)行模式


一個(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ù)是“無可替代”的,而其他層面的,都是有可替代性。


web運(yùn)行流程

瀏覽器輸入地址,回車(發(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í)行)

php網(wǎng)頁運(yùn)行原理


安裝apache


注意:





成功后,瀏覽器中瀏覽如下:


apache安裝后的目錄結(jié)構(gòu):



配置apache以運(yùn)行php程序

將剛才的網(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模塊去處理”的命令,可以有另一種寫法,如下:



補(bǔ)充一個(gè)檢測apach的配置語法的命令:

命令所在位置:

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的配置

時(shí)區(qū)配置:

先看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的模塊配置

理解一件事情:

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ù)器。

mysql的安裝:



















然后,重新瀏覽剛才的php網(wǎng)頁(將代碼略修改為以下):


結(jié)果為:



主機(jī)(站點(diǎn))配置

一個(gè)站點(diǎn)的2個(gè)核心信息為:

主機(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


單站點(diǎn)配置項(xiàng)

端口監(jiān)聽:

在apache的主配置文件httpd.conf中:


也可以寫為:


實(shí)際應(yīng)用中,我們幾乎都是80。


設(shè)置主機(jī)(站點(diǎn))的名字:服務(wù)器名,站點(diǎn)名

ServerName服務(wù)器名

舉例:


也可以設(shè)置為:



設(shè)置主機(jī)(站點(diǎn))的物理路徑:

形式:

DocumentRoot ?“實(shí)際物理路徑”

重要觀念:

站點(diǎn)就是“文件夾”——我讓它當(dāng)站點(diǎn),它就是站點(diǎn)。


比如:

原始的站點(diǎn)在這里:


修改為:


在瀏覽“l(fā)ocalhost”,發(fā)現(xiàn)被進(jìn)制訪問(Forbidden),然后添加訪問權(quán)限,如下:


就可以了。


目錄訪問權(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>


目錄訪問權(quán)限中的“分布式權(quán)限”:

對于某個(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è)文件:


然后,重新訪問剛才路徑(刷新):





多站點(diǎn)的配置

分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)。


舉例:




站點(diǎn)別名的設(shè)置:



目錄別名(虛擬目錄)的設(shè)置:

某個(gè)站點(diǎn)www.abc.com所對應(yīng)文件夾下有一個(gè)目錄為d1,則可以這樣訪問該目錄:

www.abc.com/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~?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容