PHP可以自學(xué)嗎?
黑馬程序員搭建環(huán)境PHP簡(jiǎn)介什么是PHP
PHP定義:一種服務(wù)器端的 HTML 腳本/編程語言,是一種簡(jiǎn)單的、面向?qū)ο蟮?、解釋型的、健壯的、安全的、性能非常之高的、?dú)立于架構(gòu)的、可移植的、動(dòng)態(tài)的腳本語言。是一種廣泛用于 Open Source(開放源代碼)的尤其適合 Web 開發(fā)并可以嵌入 HTML 的多用途腳本語言。它的語法接近 C,Java 和 Perl,而且容易學(xué)習(xí)。該語言讓 Web 開發(fā)人員快速的書寫動(dòng)態(tài)生成的網(wǎng)頁。PHP前身:Personal HomePage,個(gè)人主頁,使用Perl語言開發(fā)的一種寫個(gè)人主頁的語言PHP:PHP Hypertext Preprosessor,php超文本預(yù)處理器,底層使用C語言PHP發(fā)展史
Rasmus Lerdorf :創(chuàng)建者1994:1.0,個(gè)人perl,非常簡(jiǎn)單(簡(jiǎn)陋)1996:2.0,C底層,變的相對(duì)比較強(qiáng)大1998:3.0,zendEngine,聯(lián)合zend公司共同管理和維護(hù)PHP,zendEngine(zend引擎)用戶高效的解析php代碼2000:4.0,session+輸出緩沖等,session技術(shù)(會(huì)話技術(shù)),2004:5.0,zend引擎2代,增加新技術(shù)(面向?qū)ο蟾?,命名空間,異常)2015:7.0,新版的ZendEngine引擎,性能提升,新特性(異常)平臺(tái)支持(window,Linux,UNIX)數(shù)據(jù)庫(kù)支持(Sqlserver,mysql,Oracle,Access)靜態(tài)網(wǎng)站與動(dòng)態(tài)網(wǎng)站的區(qū)別
靜態(tài)網(wǎng)站:web1.0時(shí)代動(dòng)態(tài)網(wǎng)站:web2.0時(shí)代網(wǎng)站
Website的中文名稱是網(wǎng)站,是指在互聯(lián)網(wǎng)上,根據(jù)一定的規(guī)則,使用HTML、PHP等代碼語言制作的用于展示特定內(nèi)容的相關(guān)網(wǎng)頁的集合,有可供管理人員操作的后臺(tái)及用戶使用的前臺(tái)。簡(jiǎn)單地說,Website是一種通訊工具,就像布告欄一樣,人們可以通過Website來發(fā)布自己想要公開的資訊,或者利用Website來提供相關(guān)的網(wǎng)絡(luò)服務(wù)。人們可以通過網(wǎng)頁瀏覽器來訪問Website,獲取自己需要的資訊或者享受網(wǎng)絡(luò)服務(wù)。靜態(tài)網(wǎng)站特點(diǎn)
1.網(wǎng)頁內(nèi)容一經(jīng)發(fā)布到網(wǎng)站服務(wù)器上,無論是否有用戶訪問,每個(gè)靜態(tài)網(wǎng)頁的內(nèi)容都是保存在網(wǎng)站服務(wù)器上的,也就是說,靜態(tài)網(wǎng)頁是實(shí)實(shí)在在保存在服務(wù)器上的文件,每個(gè)網(wǎng)頁都是一個(gè)獨(dú)立的文件;2.靜態(tài)網(wǎng)頁的內(nèi)容相對(duì)穩(wěn)定,因此容易被搜索引擎檢索;3.靜態(tài)網(wǎng)頁沒有數(shù)據(jù)庫(kù)的支持,在網(wǎng)站制作和維護(hù)方面工作量較大,因此當(dāng)網(wǎng)站信息量很大時(shí)完全依靠靜態(tài)網(wǎng)頁制作方式比較困難;4.靜態(tài)網(wǎng)頁的交互性較差,在功能方面有較大的限制。動(dòng)態(tài)網(wǎng)站特點(diǎn)
1.交互性:網(wǎng)頁會(huì)根據(jù)用戶的要求和選擇而動(dòng)態(tài)地改變和響應(yīng),瀏覽器作為客戶端,成為一個(gè)動(dòng)態(tài)交流的橋梁,動(dòng)態(tài)網(wǎng)頁的交互性也是今后Web發(fā)展的潮流。2.自動(dòng)更新:即無須手動(dòng)更新HTML文檔,便會(huì)自動(dòng)生成新頁面,可以大大節(jié)省工作量。3.因時(shí)因人而變:即當(dāng)不同時(shí)間、不同用戶訪問同一網(wǎng)址時(shí)會(huì)出現(xiàn)不同頁面。此外動(dòng)態(tài)網(wǎng)頁是與靜態(tài)網(wǎng)頁相對(duì)應(yīng)的,也就是說,網(wǎng)頁URL的后綴不是.htm、.html、.shtml、.xml等靜態(tài)網(wǎng)頁的常見形式,而是以.asp、.jsp、.php、.perl、.cgi等形式為后綴。在動(dòng)態(tài)網(wǎng)頁網(wǎng)址中有一個(gè)標(biāo)志性的符號(hào)——“?”網(wǎng)站基本概念服務(wù)器概念
服務(wù)器(server),也稱伺服器,是提供計(jì)算服務(wù)的設(shè)備。由于服務(wù)器需要響應(yīng)服務(wù)請(qǐng)求,并進(jìn)行處理,因此一般來說服務(wù)器應(yīng)具備承擔(dān)服務(wù)并且保障服務(wù)的能力。服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,和通用的計(jì)算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。在網(wǎng)絡(luò)環(huán)境下,根據(jù)服務(wù)器提供的服務(wù)類型不同,分為文件服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器,應(yīng)用程序服務(wù)器,WEB服務(wù)器等。服務(wù)器:能夠提供服務(wù)的機(jī)器,取決于機(jī)器上所安裝的軟件(服務(wù)軟件)Web服務(wù)器:提供web服務(wù)(網(wǎng)站訪問),就需要安裝web服務(wù)軟件,Apache,tomcat,iis等IP的概念
IP:Internet Protocol,網(wǎng)絡(luò)之間互聯(lián)協(xié)議。網(wǎng)絡(luò)之間互連的協(xié)議也就是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議。在因特網(wǎng)中,它是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守IP協(xié)議就可以與因特網(wǎng)互連互通。IP地址具有唯一性。(每臺(tái)電腦都有一個(gè)唯一的IP地址)域名
域名(Domain Name),是由一串用點(diǎn)分隔的名字組成(www.itcast.cn)的Internet上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時(shí)標(biāo)識(shí)計(jì)算機(jī)的電子方位(有時(shí)也指地理位置,地理上的域名,指代有行政自主權(quán)的一個(gè)地方區(qū)域)。域名是一個(gè)IP地址上有“面具” 。一個(gè)域名的目的是便于記憶和溝通的一組服務(wù)器的地址(網(wǎng)站,電子郵件,F(xiàn)TP等)。域名作為力所能及難忘的互聯(lián)網(wǎng)參與者的名稱。特殊IP:127.0.0.1,代表本機(jī)特殊域名:localhostDNS
DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)。用戶輸入域名localhost—》DNS(localhost 127.0.0.1)--》服務(wù)器電腦端口
端口(Port),可以認(rèn)為是設(shè)備與外界通訊交流的出口。端口可分為虛擬端口和物理端口,其中虛擬端口指計(jì)算機(jī)內(nèi)部或交換機(jī)路由器內(nèi)的端口,不可見。例如計(jì)算機(jī)中的80端口、21端口、23端口等。物理端口又稱為接口,是可見端口,計(jì)算機(jī)背板的RJ45網(wǎng)口,交換機(jī)路由器集線器等RJ45端口。用戶輸入域名localhost:端口—》DNS(localhost 127.0.0.1)--》服務(wù)器電腦—》軟件(服務(wù))Web程序的訪問流程
Web分為兩類:靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站瀏覽器發(fā)起訪問—》DNS解析域名—》服務(wù)器電腦---》服務(wù)軟件靜態(tài)網(wǎng)站訪問
動(dòng)態(tài)網(wǎng)站訪問
動(dòng)態(tài)網(wǎng)站訪問流程與靜態(tài)差不多,但是會(huì)多出幾個(gè)內(nèi)容:服務(wù)器端解析、數(shù)據(jù)庫(kù)安裝Apache安裝Apache軟件
1、 獲取Apache安裝軟件2、 雙擊安裝即可:指定對(duì)應(yīng)的路徑:E:server/apache3、選擇安裝模式:使用自定義模式4、 選擇安裝位置Apache的目錄結(jié)構(gòu)說明
Httpd.exe的詳細(xì)應(yīng)用
1、 服務(wù)器進(jìn)程:運(yùn)行之后才能夠工作2、 用來查看Apache具有哪些功能以及配置文件是否有錯(cuò):httpd或者h(yuǎn)ttpd.exe(文件所在目錄)2.1 查看使用的模塊:httpd -M2.2 驗(yàn)證配置文件是否有效:httpd –t配置默認(rèn)站點(diǎn)
1、 讓Apache確定服務(wù)器上訪問的位置:網(wǎng)站文件夾所在位置Httpd.conf:DocumentRoot2、 方便用戶使用名字訪問對(duì)應(yīng)的網(wǎng)站:給文件夾對(duì)應(yīng)的取一個(gè)別名Httpd.conf:ServerName端口可以單獨(dú)實(shí)現(xiàn):httpd.conf:listen3、 凡是涉及到Apache配置文件的修改,那么需要重啟Apache才能生效4、 實(shí)現(xiàn)DNS域名解析:通常默認(rèn)站點(diǎn)都是本地DNS:hosts文件安裝與配置PHP安裝PHP語言
1、 獲取PHP安裝文件:建議去官網(wǎng)2、 解壓縮3、 安裝:將解壓后的文件放到E:/server/,重命名PHP5PHP的目錄結(jié)構(gòu)說明
php.exe的應(yīng)用
PHP.exe就是可以解析PHP代碼轉(zhuǎn)變成HTML代碼從而讓瀏覽器可以解析的。1、 通過CMD控制器進(jìn)入到php.exe所在目錄2、 通過php.exe運(yùn)行命令來指定要解析的PHP腳本就可以:php.exe -f PHP文件所在路徑配置Apache加載PHP模塊
1、 Apache加載PHP模塊:在Apache的主配置文件(httpd.conf)中加載對(duì)應(yīng)的PHP提供的模塊LoadModule php5_module PHP所提供的模塊鏈接所在路徑2、 Apache分配工作給PHP模塊:如果是PHP代碼就交給PHP處理:文件后綴判斷.php結(jié)尾肯定是PHP代碼AddType application/x-httpd-php .php3、 將PHP的配置文件加載到Apache配置文件中:共同生效3.1 在Apache中指定PHP配置文件所在路徑PHPIniDir php.ini所在路徑3.2 php.ini文件默認(rèn)是不存在的,是以development和production格式存在,需要格式化說明:PHP的配置文件已經(jīng)加入到Apache的配置項(xiàng)中,意味著php.ini的修改需要Apache重啟才會(huì)生效。安裝與配置MySQL安裝MySQL軟件
1、 獲取MySQL安裝軟件2、 雙擊安裝即可:沒有特殊情況的直接下一步就可以完成3、 選擇custom,自定義安裝:選擇安裝路徑3.1 軟件安裝目錄:server/mysql3.2 數(shù)據(jù)安裝目錄:server/mysql/data4、 在完成安裝之后,要實(shí)現(xiàn)配置5、 選擇詳細(xì)配置(默認(rèn)的)6、 選擇開發(fā)環(huán)境:默認(rèn)的7、 選擇功能:默認(rèn)8、 并發(fā)設(shè)置(建議手動(dòng))9、 配置訪問環(huán)境10、 字符集設(shè)定:系統(tǒng)字符集11、 服務(wù)安裝:將MySQL作為windows下的一個(gè)服務(wù)啟動(dòng)12、 輸入root(超級(jí)管理員)的用戶密碼13、 等待配置:4個(gè)都是勾表示安裝成功MySQL的目錄結(jié)構(gòu)說明 Bin目錄的常用命令
軟件設(shè)計(jì)結(jié)構(gòu):C/S和B/SC/S:Client客戶端/Server服務(wù)端,用戶需要安裝客戶端產(chǎn)品才能訪問服務(wù)器,而且只能訪問一種軟件(當(dāng)前自己)B/S:Browser瀏覽器/Server服務(wù)端,用戶只需要安裝瀏覽器,就可以訪問所有的服務(wù)器(B/S架構(gòu)服務(wù))MySQL的訪問流程
Mysql是一款C/S架構(gòu)的軟件,需要通過客戶端來訪問服務(wù)端(MySQL提示也提供了其他模式的訪問:通過一些插件擴(kuò)展來充當(dāng)客戶端)1、 啟用MySQL客戶端:mysql.exe,該軟件本身可以通過CMD控制臺(tái)運(yùn)行本身客戶端:mysql.exeMysql.exe通過cmd運(yùn)行2、 MySQL客戶端訪問服務(wù)端需要進(jìn)行尋找匹配:連接認(rèn)證連接:IP和端口確認(rèn),如果是本地都可以省略-h主機(jī)地址----》-hlocalhost(可以是IP)-P端口---》-P3306認(rèn)證:通過用戶名和密碼進(jìn)入服務(wù)器-u用戶名---》-uroot,不可以省略(匿名用戶除外)-p密碼---》-proot3、 退出命名:\q注意:通常連接認(rèn)證的時(shí)候密碼不建議明文,可以在輸入-p之后回車,系統(tǒng)會(huì)再次讓輸入密碼,這個(gè)時(shí)候就是密文PHP連接MySQL數(shù)據(jù)庫(kù)
PHP本身不具備操作MySQL數(shù)據(jù)庫(kù)的能力,需要借助PHP操作MySQL的擴(kuò)展來實(shí)現(xiàn)。1、 PHP加載MySQL擴(kuò)展:php.ini文件中2、 PHP中所有的擴(kuò)展都是在ext文件夾中,需要制定擴(kuò)展所在路徑:extension_dir3、 php.ini已經(jīng)被Apache加載,所以需要重啟才會(huì)生效。設(shè)定PHP的系統(tǒng)時(shí)區(qū)
通過php.ini中的timezone配置項(xiàng)來實(shí)現(xiàn)配置虛擬主機(jī)
一臺(tái)服務(wù)器很貴,如果只能部署一個(gè)網(wǎng)站,那么非常浪費(fèi)。所以需要通過其他渠道來實(shí)現(xiàn)一臺(tái)主機(jī)上部署多個(gè)網(wǎng)站。什么是虛擬主機(jī)
虛擬主機(jī):Virtual machine,并不存在真實(shí)的主機(jī),但是可以提供真實(shí)主機(jī)所實(shí)現(xiàn)的功能。通俗的講,虛擬主機(jī)就是將計(jì)算機(jī)中不同的文件夾進(jìn)行不同的命名,然后可以實(shí)現(xiàn)讓服務(wù)器(Apache)根據(jù)用戶的需求從不同的文件夾(網(wǎng)站)中讀取不同的內(nèi)容。虛擬主機(jī)的分類
在Apache中,可以將虛擬主機(jī)劃分成兩類:1、 基于IP的虛擬主機(jī):一臺(tái)電腦上有多個(gè)IP,每個(gè)IP對(duì)應(yīng)一個(gè)網(wǎng)站原理:電腦默認(rèn)只有一個(gè)IP,因?yàn)橥ǔV慌溆幸粋€(gè)網(wǎng)卡;但是有的電腦(服務(wù)器居多)可以配置多個(gè)網(wǎng)卡,每個(gè)網(wǎng)卡可以綁定一個(gè)IP地址。2、 基于域名的虛擬主機(jī):一臺(tái)電腦上只有一個(gè)IP,但是IP下可以制作多個(gè)網(wǎng)站,但是需要給每個(gè)網(wǎng)站不同的名字(虛擬主機(jī)名)搭建基于域名的虛擬主機(jī)
在Apache中,虛擬主機(jī)的搭建有兩種方式:1、 在主配置文件中搭建:需要手動(dòng)開啟虛擬主機(jī)(基于域名)NameVirtualHost *:802、 在專門的虛擬主機(jī)配置文件中配置2.1 在主配置文件中加載虛擬主機(jī)配置文件(httpd.conf):虛擬主機(jī)配置文件已經(jīng)開啟了虛擬主機(jī)NameVirtualHost2.2 虛擬主機(jī)從配置文件(extra/httpd-vhosts.conf)中配置虛擬主機(jī)①增加一個(gè)對(duì)應(yīng)的站點(diǎn)文件夾位置:DocumentRoot②增加主機(jī)名字:文件夾的別名:ServerName③ 增加域名解析DNS:hosts④需要給當(dāng)前設(shè)定的站點(diǎn)(目錄)訪問權(quán)限<Directory ‘站點(diǎn)目錄’>Order Deny,Allow //沒有順序關(guān)系:實(shí)際順序有意義Deny from 指定的范圍Allow from 指定范圍/all</Directory>⑤ 配置訪問列表:當(dāng)訪問是一個(gè)目錄時(shí)候(沒有指定具體要訪問的文件)Options Indexes [FollowSymLinks],如果訪問目錄,那么列表顯示所有文件⑥ 當(dāng)用戶訪問指定目錄不指定文件的時(shí)候,通常需要系統(tǒng)指定一個(gè)默認(rèn)文件DirectoryIndex 默認(rèn)的文件列表,使用空格分離注意:如果說網(wǎng)站中整個(gè)網(wǎng)站根目錄允許訪問,但是其中還有其他文件夾不允許訪問:可以增加多個(gè)Directory標(biāo)簽,針對(duì)不同的文件夾3、 一旦啟用虛擬主機(jī)配置文件,那么默認(rèn)的主機(jī)地址localhost就不再生效,如果想要生效:為localhost增加單獨(dú)的虛擬主機(jī)