iT邦幫忙

1

[我所不知道的技術細節] PHP Hello World #WebServer #PHP #XAMPP

Sam 2020-05-14 17:06:08972 瀏覽

https://images.pexels.com/photos/34600/pexels-photo.jpg?cs=srgb&dl=html-php-web-wordpress-34600.jpg&fm=jpg

攝影師:Negative Space,連結:Pexels

哈囉,我們又見面了,最近因為工作的關係,需要用到 PHP(其實是因為我最近在各種後端面試 ,有些考試要用到,只好來惡補一下XD),那麼今天就來記錄一下我的 PHP 之旅,類此夠~

1. PHP 是什麼?

PHP 是一種程式語言,常被用來 架網站,相信即使不是後端工程師或軟體人,也會多多少少聽過 PHP 這個名詞,因為知名的部落格軟體 Wordpress 就是用 PHP 寫的,架 Wordpress 時,也需要用到 phpMyAdmin 的資料庫管理工具,由此可知,是個曝光度很高的程式語言呢~

https://ithelp.ithome.com.tw/upload/images/20200514/20124548blLjCCfmis.png

PHPWiki 頁面

PHP 這個程式語言,在我的印象中(是個人立場,不代表任何人的意見),是個比較老派的語言,跟 Java 有得比,事實上,在發展歷史中,也是大概 1995 年左右的產物,也就是我剛出生的時候?,然後,就在我開始學習後端之後,才知道有 Laravel 這個近期崛起的後端框架,這個框架就是使用 PHP,才讓 PHP 又紅起來,但不要問我其他的,我也只是在 Hello World 等級的人而已 QQ

2. 怎麼開始用 PHP ?

PHP 官網看,現在更新到 7.2.307.3.177.4.5,而且最後更新還是一個月前的事而已,是個還很活躍的程式語言 ~

https://ithelp.ithome.com.tw/upload/images/20200514/2012454835Aw9tIT9v.png

PHP 官方網站

2.1 在 macOS 安裝 PHP

這相對 Windows 用戶來講,是比較簡單的安裝方法,可以參考 (2019) macOS 上安裝 PHP 語言 | OA Wu's Blog,簡單來說只要一行,$ sudo brew install php 就可以安裝 homebrew 上的最新版本囉,可以用 $ php -v 來檢查有沒有安裝成功,也可以看到你安裝的 php 是哪一個版本哦。

2.2 在 Windows 10 安裝 PHP

Windows 可以直接在官網下載你想要的 PHP 版本,但還要額外修改一些設定(像是 php.ini 等等),有點麻煩,我自己也沒有很熟,可以參考 (2017) 在 win10 上安裝與設定 PHP ( IIS) | 未老人的手扎

3. 所以 PHP Hello World 呢?

別急,這不就來了嗎,先用你慣用的文字編輯器打下:

<?php
echo "Hello World, my dear PHP";
?>

存檔為 helloworld.php,接下來就是要執行了,打開你的 Terminalcmd,切換到你存放 helloworld.php 的資料夾,執行 $ php helloworld.php,就會跑出

Hello World, my dear PHP

在此,你已經成功寫下第一支 PHP 程式,但,這應該不是你想要的吧 ?!

4. 可是我想看到 PHP 在網頁上執行啊!

沒錯,相信大家寫 PHP 大部分就是為了要架伺服器用的吧,這時候可不只是寫個 php 檔案就能讓其他人能使用,你還需要架設 Web Server(你可能聽過 ApacheNginx 之類的名詞),來把你的 PHP code 放到網頁上執行。

你可以把 Web serverPHP code 的關係,想像成下圖,使用者(client) 使用自己的裝置(電腦、手機等),透過 httphttps 的協定,將請求(request)傳送到我們的 Web server,然後 Web server 判斷使用者想要的是哪個路徑或頁面,再由 Web server 去把直譯後的 php code 轉成 html 檔,再回傳(response) 給使用者的瀏覽器,來渲染(render) 成你在瀏覽器看到的網頁樣子。

https://ithelp.ithome.com.tw/upload/images/20200514/20124548ttNphvypA3.png

在這裡,你有幾種選擇來執行你的 PHP 程式到網頁上,第一種是「自己安裝 Apache 等等的 Web server」,優點是你可以把 Apache 抽換成 Nginx 或其他的 Web Server,缺點是你要自己設定、維護和管理;第二種是使用 PHP 框架,像是 Laravel 可以直接幫你把 PHP code 跑起來,開發很方便;第三種是「安裝懶人包 XAMPP」,就算不使用框架,也可以把純 PHP code 放到網頁上。

針對第一種方法,可以參考 (2016) 在Mac設定Apache、PHP、MySQL | Medium,這樣的做法,比較適合對 Apache、PHP、MySQL 都熟的人,才比較不會出錯,不然只是想要簡單寫個 PHP 而已,還要先去了解 ApacheMySQL 的運作跟指令,實在是很煩。

第二種方法,框架總是把細節包的好好的,開發者可以很專注在 開發 這件事情上,相對的壞處就是,被保護的太好了,實際上的運作細節可以完全不知道,長期來看,安捏恩湯,但如果你已經了解整個運作原理,使用框架來加速開發沒什麼不好的。

4.1 使用 XAMPP 比較純、簡單

我只是想要簡單跑個 PHP 而已,還沒有想要碰到框架,但要自己維護 apache 的服務實在有點麻煩,所以我在這邊選擇使用 XAMPP,你可以把 XAMPP 想成一種 PHP 的網頁開發懶人包,XAMPP 的每個字母都有意思,其中 X 我猜是 mixed 的意思,而 A 代表 ApacheM 代表 MariaDB,然後兩個是 PHPPerl,看到這裡應該能想像懶人包的概念了,也就是把網頁開發需要的東西都包給你。

https://ithelp.ithome.com.tw/upload/images/20200514/20124548A7tXTZ5BPx.png

使用 XAMPP 的話,只要簡單點個 Start 按鈕、再到 Volumesmount 按鈕,整個服務就跑起來了,再點 Go to Application 按鈕,就有 XAMPPHello World 頁面。

使用 XAMPP,我這邊的預設是 http://192.168.64.2 這個網址,看這個 IP 也知道這是 local IP,也就是說把這串網址,傳給你朋友,他會很傻眼 XD,因為他連不到。

https://ithelp.ithome.com.tw/upload/images/20200514/201245480KhrA6TAaC.png

4.2 那要怎麼在 XAMPP,執行我自己的 PHP code ?

XAMPPVolumes 頁面,點 Explore,然後找到 htdocs 資料夾

https://ithelp.ithome.com.tw/upload/images/20200514/20124548gcVb3tacvl.png

htdocs 就是你的 PHP source code 的專案資料夾了,ht 代表 host(主機) 的意思,docs 代表 documents(文件),點進去!你會發現 index.php,這就是現在你的網頁的首頁,裡面長這樣:

<?php
	if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
		$uri = 'https://';
	} else {
		$uri = 'http://';
	}
	$uri .= $_SERVER['HTTP_HOST'];
	header('Location: '.$uri.'/dashboard/');
	exit;
?>
Something is wrong with the XAMPP installation :-(

我們就直接把裡面改成這樣:

<?php
echo "<h1>Hello World, PHP with XAMPP</h1>";
echo "只是想跑個 php 這麼麻煩!";
?>

ps. 在 php 內,可以寫 html 的語法 tag 唷~

所以再回到剛點擊 Go to Application 的那個網頁,重新整理之後

https://ithelp.ithome.com.tw/upload/images/20200514/20124548Kma1bzcJzf.png

就可以看到我們自己寫的 PHP 程式拉 ~

4.3 那麼如果想創一個頁面是 http://192.168.64.2/hello_world/ 呢?

在使用 XAMPP 的情況下,routing 這件事是需要自己手動來的 XD,你可以透過在 htdocs/ 這個資料夾下,再創一個叫做 hello_world 的資料夾,然後在 hello_world 的資料夾中,再新增一個叫做 index.php 的檔。

所以現在的目錄架構是這樣的:

`htdocs/`

├ `index.php`

├ ...

└ `hello_world/`

    └ `index.php`

如果說 hello_world/index.php 是這樣的:

<?php

echo "<h1>這是第二層的 Hello World</h1>";

?>

跑起來就是這樣

https://ithelp.ithome.com.tw/upload/images/20200514/20124548og9qEPBo5E.png

總結

相信你看到這裡,會跟我有一樣的感受,怎麼跑個 PHP 這麼麻煩啊!但其實麻煩的不在 PHP,而是「透過網頁執行 PHP 」,這件事情才是麻煩,相同原理,如果今天我不用 Django 的話,我想要單純透過網頁執行 Python 也是一樣的麻煩,重點在於 Web Server 的觀念理解,還有 Web Server 的操作,但不得不說,框架真的太方便了。

好的,講這麼多,都還沒開始 PHP 語法呢 ~

我是 RS,這是我的 不做怎麼知道系列 文章,我們 下次見。



尚未有邦友留言

立即登入留言