
攝影師:Negative Space,連結:Pexels
哈囉,我們又見面了,最近因為工作的關係,需要用到 PHP(其實是因為我最近在各種後端面試 ,有些考試要用到,只好來惡補一下XD),那麼今天就來記錄一下我的 PHP 之旅,類此夠~
PHP 是什麼?PHP 是一種程式語言,常被用來 架網站,相信即使不是後端工程師或軟體人,也會多多少少聽過 PHP 這個名詞,因為知名的部落格軟體 Wordpress 就是用 PHP 寫的,架 Wordpress 時,也需要用到 phpMyAdmin 的資料庫管理工具,由此可知,是個曝光度很高的程式語言呢~

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

macOS 安裝 PHP這相對 Windows 用戶來講,是比較簡單的安裝方法,可以參考 (2019) macOS 上安裝 PHP 語言 | OA Wu's Blog,簡單來說只要一行,$ sudo brew install php 就可以安裝 homebrew 上的最新版本囉,可以用 $ php -v 來檢查有沒有安裝成功,也可以看到你安裝的 php 是哪一個版本哦。
Windows 10 安裝 PHPWindows 可以直接在官網下載你想要的 PHP 版本,但還要額外修改一些設定(像是 php.ini 等等),有點麻煩,我自己也沒有很熟,可以參考 (2017) 在 win10 上安裝與設定 PHP ( IIS) | 未老人的手扎
PHP Hello World 呢?別急,這不就來了嗎,先用你慣用的文字編輯器打下:
<?php
echo "Hello World, my dear PHP";
?>
存檔為 helloworld.php,接下來就是要執行了,打開你的 Terminal 或 cmd,切換到你存放 helloworld.php 的資料夾,執行 $ php helloworld.php,就會跑出
Hello World, my dear PHP
在此,你已經成功寫下第一支 PHP 程式,但,這應該不是你想要的吧 ?!
PHP 在網頁上執行啊!沒錯,相信大家寫 PHP 大部分就是為了要架伺服器用的吧,這時候可不只是寫個 php 檔案就能讓其他人能使用,你還需要架設 Web Server(你可能聽過 Apache、Nginx 之類的名詞),來把你的 PHP code 放到網頁上執行。
你可以把 Web server 和 PHP code 的關係,想像成下圖,使用者(client) 使用自己的裝置(電腦、手機等),透過 http 或 https 的協定,將請求(request)傳送到我們的 Web server,然後 Web server 判斷使用者想要的是哪個路徑或頁面,再由 Web server 去把直譯後的 php code 轉成 html 檔,再回傳(response) 給使用者的瀏覽器,來渲染(render) 成你在瀏覽器看到的網頁樣子。

在這裡,你有幾種選擇來執行你的 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 而已,還要先去了解 Apache、MySQL 的運作跟指令,實在是很煩。
第二種方法,框架總是把細節包的好好的,開發者可以很專注在 開發 這件事情上,相對的壞處就是,被保護的太好了,實際上的運作細節可以完全不知道,長期來看,安捏恩湯,但如果你已經了解整個運作原理,使用框架來加速開發沒什麼不好的。
XAMPP 比較純、簡單我只是想要簡單跑個 PHP 而已,還沒有想要碰到框架,但要自己維護 apache 的服務實在有點麻煩,所以我在這邊選擇使用 XAMPP,你可以把 XAMPP 想成一種 PHP 的網頁開發懶人包,XAMPP 的每個字母都有意思,其中 X 我猜是 mixed 的意思,而 A 代表 Apache,M 代表 MariaDB,然後兩個是 PHP 和 Perl,看到這裡應該能想像懶人包的概念了,也就是把網頁開發需要的東西都包給你。

使用 XAMPP 的話,只要簡單點個 Start 按鈕、再到 Volumes 點 mount 按鈕,整個服務就跑起來了,再點 Go to Application 按鈕,就有 XAMPP 的 Hello World 頁面。
使用 XAMPP,我這邊的預設是 http://192.168.64.2 這個網址,看這個 IP 也知道這是 local IP,也就是說把這串網址,傳給你朋友,他會很傻眼 XD,因為他連不到。

XAMPP,執行我自己的 PHP code ?在 XAMPP 的 Volumes 頁面,點 Explore,然後找到 htdocs 資料夾

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 的那個網頁,重新整理之後
就可以看到我們自己寫的 PHP 程式拉 ~
在使用 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>";
?>
跑起來就是這樣

相信你看到這裡,會跟我有一樣的感受,怎麼跑個 PHP 這麼麻煩啊!但其實麻煩的不在 PHP,而是「透過網頁執行 PHP 」,這件事情才是麻煩,相同原理,如果今天我不用 Django 的話,我想要單純透過網頁執行 Python 也是一樣的麻煩,重點在於 Web Server 的觀念理解,還有 Web Server 的操作,但不得不說,框架真的太方便了。
好的,講這麼多,都還沒開始 PHP 語法呢 ~
我是 RS,這是我的 不做怎麼知道系列 文章,我們 下次見。