PHP運行環境的搭建入門與提高(Window10中使用PHP7.4 + Apache2.4)

PHP運行環境的搭建及問題處理

本文講的是在Windows10下,使用PHP7.4.4 壓縮包+ Apache2.4.41壓縮包爲例詳細介紹如何搭建PHP運行環境,其中還對新手可能碰到的問題給出了具體的處理辦法。順便指出,現在PHP和Apache官方都已不提供install版了。建議新手使用集成組件安裝版,諸如WampServer、phpStudy,最後將說明。

PHP原爲Personal Home Page後更名爲 Hypertext Preprocessor(超級文本預處理語言),是一種創建動態交互性站點的強有力的服務器端腳本語言,是常用的網站編程語言。開源免費。

爲了學習使用 PHP,你需要一個運行環境, PHP運行環境通常包括:

★Web 服務器,WEB服務器也稱爲WWW服務器、HTTP服務器,其主要功能是提供網上信息瀏覽服務。

Apache開源的老牌服務器,它可以運行在幾乎所有廣泛使用的計算機平臺上。

IIS是英文Internet Information Server的縮寫,譯成中文就是"Internet信息服務"的意思,是微軟公司主推的,專門運行在Windows 上。

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。可以運行在多種平臺上。

★PHP

★數據庫,如 MySQL等。非必須,除非使用數據庫存儲數據。

 

下面詳細介紹在Windows10下,使用目前最新的PHP-7.4.4 壓縮包版本和Apache2.4.41壓縮包版本搭建PHP運行環境。我這裏使用的是

注意,PHP版本和Apache版本的選擇有時很關鍵,否則易出現連接不上數據庫等問題。httpd-2.4.41+php-7.4.4+微軟常用運行庫合集_2019.07.20_X64,下載地址

https://download.csdn.net/download/cnds123/12270209 
 

安裝PHP,先到官網下載:

https://www.php.net/downloads.php

注:如果想使用Apache配置PHP的話,一般需要選擇Thread Safe(TS)版本的PHP。

如果想使用IIS配置PHP的話,那麼需要選擇Non-Thread Safe(NTS)版本的PHP。

TS:Thread Safe 線程安全, 執行時會進行線程(Thread)安全檢查

NTS:Non Thread Safe 非線程安全, 在執行時不進行線程(Thread)安全檢查

使用Apache+PHP的模式下,一般是把PHP作爲一個Module load到apache中,那麼以apache父進程-多子進程的工作模式,是需要進行線程安全檢查的,所以如果是以這種方式執行php,選擇ts版本。

那麼如果是使用FastCGI(是一個常駐(long-live)型的CGI(公共網關接口、Common Gateway Interface)),比如說用php-fpm管理php執行,則不需要進行線程安全檢查,則選擇nts版本的php。】

下載後解壓(複製到D盤解壓,可修改路徑,不要含中文字符)爲:D:/php-7.4.4

在其中有兩個php配置文件,php.ini-development 和 php.ini-production,兩個文件沒有太多區別,一個用於開發環境,一個用於生產環境,區別也就是開發環境的配置能夠看到更多的錯誤警告。

複製其中一個,這裏是將php.ini-development後綴更改爲ini,用記事本打開,按需求修改部分配置

找到; extension_dir = "ext" 去掉前面的分號,也可以在ext目錄【其中是一些擴展庫】前加上其實際所在的路徑,如我的是:

extension_dir = "D:/php-7.4.4/ext"

參見下圖:

 

再將 D:/php-7.4.4加入環境變量PATH中,選中計算機,右鍵屬性–>高級系統設置 –>環境變量–>系統變量,找到Path,編輯,在其後加上。參見下圖:

 

順便說明,php命令行用法簡介

在命令行中查看當前php的版本

php –v

 

在cmd(命令行)中查看使用幫助

php -help 或php –h

 

在cmd(命令行)中執行php文件

用記事本建立文件,內容:

<?php

  echo "運行php命令行echo";

  echo "\r\n";

  echo "Hello, World.";

  echo "\r\n";

  echo "你好世界。";

?>

保存爲文件名爲:hello.php,保存路徑爲d:\phpDome。

可如下執行

php -f  路徑\文件名,如:

php -f  d:\hello.php

 

在cmd(命令行)中

 php -a

進入交互shell後,鍵入php代碼

ctrl+c退出交互shell

 

對此不多說了。

 

安裝Apache,先到官網下載:

http://httpd.apache.org/download.cgi

【使用ApacheHaus或ApacheLounge,見上圖標示2處,這兒使用後者】

下載後解壓(複製到D盤解壓,可修改路徑,不要含中文字符和空格)爲:D:/Apache24

將 D:\Apache24\bin加入環境變量PATH中(參見前面)

 

在其中找到httpd.conf

用記事本打開httpd.conf

 如下處理:

1)查找 DocumentRoot,若找到類似 DocumentRoot "c:/Apache24/htdocs"

說明此爲早期版本,將之改爲DocumentRoot "d:/Apache24/htdocs" ——即將後面“”內按你的實際安裝路徑改動,我這裏是"d:/Apache24"。

若找到類似DocumentRoot "${SRVROOT}/htdocs"

說明此爲後來版本,搜索Define SRVROOT,沒錯是找這個,找到 Define SRVROOT "/Apache24"之類,將之改爲Define SRVROOT "d/Apache24"——即將後面“”內按你的實際安裝路徑改動,我這裏是"d:/Apache24"。 

2)在文末加入如下幾句:

PHPIniDir "路徑”

LoadModule php7_module "路徑/php7apache2_4.dll" 

AddType application/x-httpd-php .php .html .htm  #添加支持對php腳本解析,解決顯示php源碼或直接下載文件

其中:

路徑依據PHP的安裝路徑(php.ini文件所在的路徑)修改,我這裏是d:/php-7.4.4。PHP7的預處理器模塊文件是 php7apache2_4.dll(特別提示,這是PHP7的預處理器模塊文件)在PHP安裝目錄下可以看到。參見下圖:

 

快速檢查apache 中的 配置文件httpd.conf 是否正常

在cmd中輸入httpd –t  回車(即按下Enter鍵),顯示如下

OK!

 

【若在cmdzhong 用httpd -t 檢查師,提示:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::4de2:6c46:aec1:6a57. Set the 'ServerName' directive globally to suppress this message

Syntax OK

處理:

在httpd.conf中,搜索"#ServerName",

在#ServerName www.example.com:80句之後

添加ServerName localhost:80】

 

現在,可以啓動apache,

以管理的身份運行CMD,參見下圖:

 

先安裝服務,在cmd中輸入httpd -k install [–n “服務名”] ,其中[]部分代表可選,不用使用默認服務名,例如:

httpd -k install -n “Apache24”

再啓動服務 net start 服務名,例如:

net start Apache24

參見下圖:

 類似上圖顯示Apache服務正常工作了。

注意,httpd.conf改動後,要重啓Apache服務才成。

【若hetpd.conf加入PHPIniDir "php.ini的路徑” 如PHPIniDir "d:/php7.4.4”報錯

apache添加php模塊後無法啓動了。

可能缺少微軟常用運行庫,搜索“微軟常用運行庫合集” 下載安裝。】

 

在cmd中查看Apache的版本號
httpd -v 

 

【附、服務操作,以管理員身份打開cmd,再如下操作

刪除服務 sc delete 服務名 

sc delete Apache24

 

啓動服務

通過命令net start 服務名

 

停止服務

通過命令net stop服務名

 

在cmd中查看開啓了哪些服務

net start

 

在cmd中查看開啓了哪些端口——列出所有端口的情況

netstat -ano

 

在cmd中查看指定端口的使用情況

如查找80端口的使用情況

netstat -ano|findstr :80

 

【順便提及

找到ApacheMonitor.exe運行(在\bin),可以方便的管理服務:

在左下角上可以看到 右擊它出現快捷菜單,單擊Open Apache Monitor 出現Apache Service Monitor對話框。參見下圖:

現在可以寫一個php文件,內容如下:

<HTML>

<HEAD><h2>PHP Hello World - 來自PHP的問候。</h2></HEAD>

<BODY>

<?php

 echo "Hello, World.";

 echo "你好世界。";

?>

</BODY>

</HTML>

保存文件名爲helloworld.php(或helloworld.html),注意保存位置htdocs(這裏是d:/Apache24/htdocs)

在瀏覽器輸入網址:http://127.0.0.1/helloworld.php 或http://localhost/helloworld.php,運行結果如下:

 OK!
 

下面給出一個好點的例子,簡單投票系統  

這個由3個文件組成poll.html、poll_vote.php、poll_result.txt

poll.html,此HTML 文件作爲用戶界面表單,內容如下

<html>

<head>

<meta charset="utf-8">

<title>簡單投票系統</title>

<script>

function getVote(int) {

  if (window.XMLHttpRequest) {

    // IE7+, Firefox, Chrome, Opera, Safari 執行代碼

    xmlhttp=new XMLHttpRequest();

  } else {

    // IE6, IE5 執行代碼

    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

  xmlhttp.onreadystatechange=function() {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

      document.getElementById("poll").innerHTML=xmlhttp.responseText;

    }

  }

  xmlhttp.open("GET","poll_vote.php?vote="+int,true);

  xmlhttp.send();

}

</script>

</head>

<body>

 

<div id="poll">

<h3>你喜歡 PHP 和 AJAX 嗎?</h3>

<form>

是:

<input type="radio" name="vote" value="0" οnclick="getVote(this.value)">

<br>否:

<input type="radio" name="vote" value="1" οnclick="getVote(this.value)">

</form>

</div>

 

</body>

</html>

 

poll_vote.php,此文件接受用戶的操作,讀寫"poll_result.txt" 文件,內容如下

<?php

$vote = htmlspecialchars($_REQUEST['vote']);

 

// 獲取文件中存儲的數據

$filename = "poll_result.txt";

$content = file($filename);

 

// 將數據分割到數組中

$array = explode("||", $content[0]);

$yes = $array[0];

$no = $array[1];

if ($vote == 0)

{

  $yes = $yes + 1;

}

if ($vote == 1)

{

  $no = $no + 1;

}

 

// 插入投票數據

$insertvote = $yes."||".$no;

$fp = fopen($filename,"w");

fputs($fp,$insertvote);

fclose($fp);

?>

 

<h2>結果:</h2>

<table>

  <tr>

  <td>是:</td>

  <td>

  <span style="display: inline-block; background-color:green;

      width:<?php echo(100*round($yes/($no+$yes),2)); ?>px;

      height:20px;" ></span>

  <?php echo(100*round($yes/($no+$yes),2)); ?>%

  </td>

  </tr>

  <tr>

  <td>否:</td>

  <td>

  <span style="display: inline-block; background-color:red;

      width:<?php echo(100*round($no/($no+$yes),2)); ?>px;

      height:20px;"></span>

  <?php echo(100*round($no/($no+$yes),2)); ?>%

  </td>

  </tr>

</table>

 

poll_result.txt內容如下

0||0

說明:文本文件 (poll_result.txt) 中存儲來自投票程序的數據。其中:

第一個數字表示 "Yes" 投票,第二個數字表示 "No" 投票。

 

現在可以發佈這個小系統了

【如何知道網址發佈位置——Apache HTTP Server 的網站發佈目錄?

可以用記事本打開 http.conf 文件,搜索找到 DocumentRoot 爲開頭的那一行:

1)如果其中含有${SRVROOT},再搜索Define SRVROOT,由Define SRVROOT後面部分和DocumentRoot ${SRVROOT}後面部分兩者確定網站發佈目錄,參見下圖:

 

2)如果其中沒有${SRVROOT},由DocumentRoot後面部分確定網站發佈目錄:

 

知道了網站發佈目錄,發佈很簡單

 

將這三個文件放到SimpleVoting 目錄中,將SimpleVoting 目錄複製到Apache安裝路徑的htdocs目錄中(這裏是d:/Apache24/htdocs)

現在可以運行這個簡單投票系統了。

在瀏覽器輸入網址:http://127.0.0.1/SimpleVoting/poll.html或http://localhost//SimpleVoting/poll.html

上面演示了這臺電腦,若未接入網絡,可在此電腦的瀏覽器輸入:localhost/php項目起始文件名訪問,若接入網絡,就可以被互聯網中其它客戶端用戶訪問了——在瀏覽器輸入:地址/php項目起始文件名 訪問。假設設置這臺電腦局域網IP爲192.168.1.6,在此局域網的另一臺電腦的瀏覽器輸入網址http://192.168.1.6/simpleVoting/poll.html  回車(按下Enter鍵)即可訪問。

數據庫

通過 PHP,您可以連接和操作數據庫。php支持的數據庫較多,除常見的Oracle、SQLServer、 Mysql外,還有很多。
當有數據存儲與檢索等需求時,就需要數據庫。

關於數據庫安裝不多說,可參見:
https://blog.csdn.net/cnds123/article/details/104454487

找到PHP根目錄下的php.ini,用文本編輯器打開找到下面幾條常用配置,去掉前面的分號:
;extension=mysqli
;extension=pdo_mysql

參見下圖:

 注意,改動後,要重啓Apache服務生效。
 

推薦使用集成組件安裝版,諸如WampServer等,它已經包含了 PHP、Apache、Mysql ,免去了開發人員將時間花費在繁瑣的配置過程。

Windows 系統可以使用 WampServer,支持32位和64位系統,根據自己的系統選擇版本。官網下載地址:http://www.wampserver.com 

但一般情況下不可下載。可到網上搜索下載,下面給出一個鏈接(華軍軟件園WampServer3.2下載頁):

http://soft.onlinedown.net/soft/82112.htm

 

WampServer

需要初學者最初明確的兩點:一是WampServer 安裝時要留意安裝路徑,集成的PHP、Apache、MySQL 安裝在此路徑下的bin中,二是安裝路徑中的www目錄就是其默認的網站發佈目錄。參見下圖:

WampServe之默認網站發佈目錄的修改

在WampServer的安裝目錄找到scripts目錄,用記事本打開config.inc.php文件,找到下面的句子:

$wwwDir=Sc_installDir.'/www';

改成你要設置的網站發佈目錄,例如你想將網站代碼放到d:/site,將上句改爲

$wwwDir='d:/site'

然後重啓WampServer生效。

【也可以httpd.conf文件中修改DocumentRoot指定目錄,然後重啓WampServer生效,但這樣修改,通過任務欄“W”圖標進入原來網站發佈目錄。】

wampapache或wampapache64、wampariadb或wampariadb64、wampmysqld或wampmysqld64是wamp安裝後出現的服務進程。

64代表64位版本沒有的是32位版本。

wampapache 是wamp的apache服務端進程。

wampariadb是wamp的ariadb數據庫服務端進程。

wampmysqld是wamp的mysql數據庫服務端進程。

 

phpStudy

該程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安裝,無須配置即可使用,是非常方便、好用的PHP調試環境。

官網地址:https://www.xp.cn

其安裝後的目錄如下:

使用pdo 連接測試代碼,其中password,要替換爲MySQL的root用戶的實際登錄密碼

<?php

try {

 $con= new PDO("mysql:host=localhost","root","password");

echo "連接成功";

}

catch(PDOException $e)

{

    echo $e->getMessage();

}

 ?>

 

使用mysqli_connect 連接測試代碼,其中password,要替換爲MySQL的root用戶的實際登錄密碼

<?php

$con= mysqli_connect("localhost","root1","password");

if ($con->connect_error) {

     die("Connection failed: " . mysqli_connect_error());

}

echo "連接成功";

 ?>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章